Python中如何使用Fiddler进行网络调试?
为什么我 fidder 抓手机 app 的包能抓一些 https 的包(比如说 b 站),但是打开抖音 app 却显示网络错误,然后关掉 https,又可以抓了
Python中如何使用Fiddler进行网络调试?
APP 可以用双向数字证书加解密 这样好像就能杜绝网络调试工具
在Python里用Fiddler抓包调试,核心是让Python的请求走Fiddler的代理。Fiddler默认在本机(127.0.0.1)的8888端口开了一个HTTP/HTTPS代理服务器。你只需要在发请求时设置代理参数,并处理HTTPS证书问题。
关键步骤:
- 启动Fiddler:确保Fiddler正在运行,并开启了
Allow remote computers to connect(Tools -> Options -> Connections)。 - 在代码中配置代理:无论你用
requests、urllib还是其他库,都需要将代理设置为http://127.0.0.1:8888。 - 处理HTTPS证书:因为Fiddler会对HTTPS流量进行解密(中间人),你需要忽略证书验证错误(仅限调试环境!)。
代码示例(使用requests库):
import requests
# 设置代理(Fiddler默认地址)
proxies = {
'http': 'http://127.0.0.1:8888',
'https': 'http://127.0.0.1:8888'
}
# 对于HTTPS请求,需要禁用证书验证(仅调试用!)
response = requests.get('https://httpbin.org/get',
proxies=proxies,
verify=False)
print(response.text)
代码示例(使用urllib):
import urllib.request
import ssl
# 创建处理器并设置代理
proxy_handler = urllib.request.ProxyHandler({
'http': 'http://127.0.0.1:8888',
'https': 'http://127.0.0.1:8888'
})
# 创建忽略SSL证书的上下文(仅调试用!)
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
# 构建opener
opener = urllib.request.build_opener(proxy_handler)
urllib.request.install_opener(opener)
# 发起请求(使用自定义的SSL上下文)
response = urllib.request.urlopen('https://httpbin.org/get', context=ssl_context)
print(response.read().decode())
一句话总结:配好代理关掉证书验证,流量就能进Fiddler了。
这些软件检测到有代理,会拒绝连接的。 不是 fiddler 的问题。
Android 的不清楚, 但 iOS APP 是可以指定系统内置根证书才受信任, 自签名的添加到系统根证书也没用。
那有没有什么解决方法啊?
安卓应用也可以设置只信任系统代理。
最好是修改应用的 manifest 允许用户证书。
一楼说的对,这种基本没办法解决
有些应用防 fd
手机要安装证书
见过这几种的:检测到代理直接退出、检测到代理就不走代理、检测到代理就走自己的协议、双向证书验证
试试 packet capture
chrome f12
ssl pinning
今天也碰到这个问题,有解决方案吗?
ssl pinning
+1
SSL pinning Android 端装 Xposed 用 Just Trust Me 可解,但如果还带 ClientAuth 的话就很恶心了,要反编译提取证书和私钥密码导入 fiddler, 如果混淆加固做的好的话只有等大手破解
iOS 不越狱肯定无解

