如何使用python捕获网络流量

2024-05-16 04:10:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python,并试图在我的计算机和站点之间收集HTTP(s)通信,其中包括所有传入和传出的请求、响应(如图像和外部调用等)

我试图在我的hit_site函数中找到网络流量,但没有找到信息。

hit_site("http://www.google.com")

def hit_site(url):
    print url
    r = requests.get(url,stream = True)
    print r.headers
    print r.encoding
    print r.status_code
    print r.json()
    print requests.get(url,stream=True)
    print r.request.headers
    print r.response.headers
    for line in r.iter_lines():
        print line
    data = r.text
    soup = BeautifulSoup(data)
    return soup

下面是我要捕获的信息类型的一个示例(我使用fiddler2获取此信息)。所有这些都来自于访问groupon.com):

#   Result  Protocol    Host    URL Body    Caching Content-Type    Process Comments    Custom  
6   200 HTTP    www.groupon.com /   23,236  private, max-age=0, no-cache, no-store, must-revalidate text/html; charset=utf-8    chrome:6080         
7   200 HTTP    www.groupon.com /homepage-assets/styles-6fca4e9f48.css  6,766   public, max-age=31369910    text/css; charset=UTF-8 chrome:6080         
8   200 HTTP    Tunnel to   img.grouponcdn.com:443  0           chrome:6080         
9   200 HTTP    img.grouponcdn.com  /deal/gsPCLbbqioFVfvjT3qbBZo/The-Omni-Mount-Washington-Resort_01-960x582/v1/c550x332.jpg    94,555  public, max-age=315279127; Expires: Fri, 18 Oct 2024 22:20:20 GMT   image/jpeg  chrome:6080         
10  200 HTTP    img.grouponcdn.com  /deal/d5YmjhxUBi2mgfCMoriV/pE-700x420/v1/c220x134.jpg   17,832  public, max-age=298601213; Expires: Mon, 08 Apr 2024 21:35:06 GMT   image/jpeg  chrome:6080         
11  200 HTTP    www.groupon.com /homepage-assets/main-fcfaf867e3.js 9,604   public, max-age=31369913    application/javascript  chrome:6080         
12  200 HTTP    www.groupon.com /homepage-assets/locale.js?locale=en_US&country=US  1,507   public, max-age=994 application/javascript  chrome:6080         
13  200 HTTP    www.groupon.com /tracky 3       application/octet-stream    chrome:6080         
14  200 HTTP    www.groupon.com /cart/widget?consumerId=b577c9c2-4f07-11e4-8305-0025906127fe    17  private, max-age=0, no-cache, no-store, must-revalidate application/json; charset=utf-8 chrome:6080         
15  200 HTTP    www.googletagmanager.com    /gtm.js?id=GTM-B76Z 39,061  private, max-age=911; Expires: Wed, 22 Oct 2014 20:48:14 GMT    text/javascript; charset=UTF-8  chrome:6080         

对于如何使用python捕获网络流量的任何想法,我将非常感激。


Tags: notextcomhttpurlageapplicationwww
1条回答
网友
1楼 · 发布于 2024-05-16 04:10:20

dpkt是一个用于解析TCP流量的扩展工具(用Python编写),它是includes support for decoding packets involved in the SSL handshake。运行和解码Python捕获的另一个工具是pypcapfile

注意,要解码SSL通信量包括数据,需要知道私钥。对于第三方服务器(比如Google)来说,这有点问题,要解决这个问题需要付出很大的努力。其中一种方法是使用已知的私钥设置一个代理,在中间播放man(并在本地存储中安装一个自签名的CA,以强制浏览器接受它)。

相关问题 更多 >