【fiddler】如何使用fiddler抓取python请求
使用 Fiddler 可以很容易抓取到从浏览器发出的 http 请求,然而在使用程序模拟 http 请求时,fiddler 抓取不到发送的这些请求,解决方法:就是在程序中添加代理。
开启fiddler后浏览器中所有访问几乎都可以在fiddler查看到与之对应的http请求,由此可以判断程序所构造的http 请求是否正确。对于python请求的抓取,只需设置成 127.0.0.1:9988 即可;需要一个代理来对网络请求进行过滤展示:
Python程序中设置HTTP代理,下面以 Python 发送http 请求为例说明:
urllib2/urllib 库的代理设置:
urllib2
是Python标准库,功能很强大,只是使用起来稍微麻烦一点。在Python
3中,urllib2不再保留,迁移到了urllib模块中。urllib2中通过ProxyHandler来设置使用代理服务器。
urllib2.urlopen("http://www.csdn.com")
这样发的请求使用 fiddler 抓不到;
添加代理的方法:
import urllib2
proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8888'})
opener = urllib2.build_opener(proxy)
response = opener.open('http://wwww.csdn.com')
print response.read()
也可以用install_opener将配置好的opener安装到全局环境中,这样所有的urllib2.urlopen都会自动使用代理。
import urllib2
proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8888'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
response = urllib2.urlopen('http://wwww.csdn.com')
print response.read()
在Python 3中,使用urllib。
import urllib
proxy_handler = urllib.request.ProxyHandler({'http': 'http://127.0.0.1:8888/'})
opener = urllib.request.build_opener(proxy_handler)
r = opener.open('http://www.csdn.com')
print(r.read())
httplib库的代理设置:
解决方法如下:
import httplib
httpClient = httplib.HTTPConnection("127.0.0.1",8888,timeout = 30)
requests库的代理设置(官网):
requests是目前最优秀的HTTP库之一,也是我平时构造http请求时使用最多的库。它的API设计非常人性化,使用起来很容易上手。给requests设置代理很简单,只需要给proxies设置一个形如 {'http': 'x.x.x.x:8080', 'https': 'x.x.x.x:8080'} 的参数即可。其中http和https相互独立。如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求:
import requests
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}
requests.get("http://example.org", proxies=proxies)
你也可以通过环境变量 HTTP_PROXY 和 HTTPS_PROXY 来配置代理。
$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.1.10:1080"
$ python
>>> import requests
>>> requests.get("http://example.org")
若你的代理需要使用HTTP Basic Auth,可以使用 http://user:aaa@qq.com/ 语法:
proxies = {
"http": "http://user:aaa@qq.com:3128/",
}
要为某个特定的连接方式或者主机设置代理,使用 scheme://hostname 作为 key, 它会针对指定的主机和连接方式进行匹配。
proxies = {'http://10.20.1.128': 'http://10.10.1.10:5323'}
注意,代理 URL 必须包含连接方式。
可以直接设置session的proxies属性,省去每次请求都要带上proxies参数的麻烦。
s = requests.session()
s.proxies = {'http': '127.0.0.1:9988'}
print(s.get('http://httpbin.org/ip').json())
***************************************************************************************************
测试一下:
推荐阅读
-
【fiddler】如何使用fiddler抓取python请求
-
如何设置Fiddler来拦截Java代码发送的HTTP请求,进行各种问题排查
-
Fiddler如何抓取手机APP数据包
-
.net core使用HttpClient发送代理请求_程序内抓包_Fiddler抓包
-
手把手教你如何用Fiddler抓取手机数据包(iOS+Android)
-
使用fiddler抓包手机请求数据
-
fiddler使用方法之Fiddler显示IP,Fiddler中文乱码解决方法以及fiddler模拟发送get/post请求
-
如何使用Python实现自动化抓取浏览器内容和提交答案
-
fiddler工具如何使用和抓包小程序的使用
-
fiddler抓取不到python-request的包?InsecureRequestWarning: Unverified HTTPS request is being made to host '