python爬虫-抓包工具Fiddler

mac2025-11-09  10

HTTP

所谓的http代理,其实就是代理客户机的http访问,主要代理浏览器访问页面。 代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它以后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。 利用socket 模拟代理过程

import socket import re # 创建一个服务端 用来接收http请求 server = socket.socket() server.bind(('0.0.0.0',6868)) server.listen(5) while True: # 接收连接 conn,addr = server.accept() # 接收请求 data = conn.recv(1024) print(data) # 解析客户端想发送服务器的域名 url = re.findall(b'Host:(.*?)\r',data)[0] print(url) # 转发这个请求 # 客户端 client = socket.socket() # 客户端发送请求到服务器 client.connect((url,80)) # 转发收到的请求数据 client.send(data) # 接收 res = client.recv(1024) # 回发给客户端 conn.send(res) print(123) conn.close() #关闭代理服务器 client.close() #关闭客户端

以下是我们的测试代码,即向百度网站发送请求,使用我们自己编写的代理服务器:

import requests response = requests.get('http://www.baidu.com',proxies={'http':'http://127.0.0.1:6868'}) print(response.url)

而所谓代理池,就是多个代理服务器,当我们选择发送请求时,随机选择代理池中的某个代理服务器,使得服务端无法通过一个固定的代理服务器来找到客户端

Fiddler使用

fiddler,英文单词的意思是手风琴,我们这里指的是一款强大的抓包工具,本质就是一个HTTP代理服务器。 这就是fiddler这个抓包工具的程序界面

Session窗口

1.这三栏分别为请求的的顺序号,状态码,以及协议类型 2.这三栏分别为请求的目的主机,url,以及请求体的字节大小 3.这几栏分别为缓存与否,内容类型,请求程序,备注等 4.每个请求都通过session标签,即请求的颜色来表示请求的状态或者类型

Inspectors检查器窗口

以下即为程序界面右侧的检查器窗口,上半部为请求头部分,下半部为响应头部分,并且上下两个窗口都包含了一些数据格式过滤器或者其他形式的展示方式:比如HexView为16进制展示方式,json和xml为一种数据格式

Filters过滤器窗口

过滤器窗口,其中的过滤规则可以在Actions中保存和加载 例如,我们可以通过过滤器,调整成只显示www.baidu.com的session会话: 同样,也可以通过只选择某个进程来过滤我们的session: 或者,根据请求头,url所包含的信息来过滤session: 设置断点来过滤session,在这个抓包工具(即代理服务器)中停顿下来,可以进行修改请求或者响应再发送给服务器或者客户端: 最后,也可以根据响应的各项内容进行过滤:

Find查找器

在工具栏里能够找到Find 查找器 可以看到,通过各种选项包括正则表达式,二进制、解码压缩内容等等进行查找会话

命令行查找

在session会话窗口的下面有一个黑框,在黑框中可以输入命令来进行搜索: 1.select命令:搜索相应类型的session,即Content-Type 2.? 命令:根据URL来进行搜索 3.= 命令:根据状态码来进行搜索 4.@ 命令:仅根据域名来进行搜索

断点

设置断点是Fiddler最强大的功能之一,在设置好断点后,Fiddler会捕捉且截断所有经过的消息,我们可以任意修改HTTP请求信息,包括Host、Cookies或表单的数据。可以设置断点修改request,也可以设置断点修改response。 断点方式有两种,一种是通过菜单栏设置全局的断点,一种是通过命令行设置指定的断点 全局断点 在菜单栏中选择Rules>Automatic Breakpoints,即可选择断点方式,有两个选择,分别是在请求服务器发送的时候暂停,和在响应返回到客户端的时候暂停。 指定断点 指定断点需要输入指定的命令进行断点: 1.bpu:在指定网页发起请求后暂停。如bpu www.baidu.com 2.bpafter:在指定网页返回响应时暂停。 3.bpm:中断指定请求方式的请求。如:bpm get 4.bps:中断指定状态码的session。如:bps 200 例如我们使用命令行对www.baidu.com进行设置断点: 再对窗口中红色开头的会话进行选中,点击上方的go,即可放行:

app抓包

我们在网上可以下载一个安卓模拟器,来实现app的抓包。 1.连接网络,一定要注意,手机和电脑在同一个网络,由于我们这里使用的是PC端上的安卓模拟器,所以一定是在同一个网络 2.配置Fiddler:Tools >> options >> connections >> 勾选 allow remote computers to connect 即允许远程计算机连接 3.查看本机ip地址:在cmd窗口中,输入ipconfig,查看以太网,可以看到IPv4地址:192.168.······即为我们的本机IP地址 4.确保手机连接wifi,并且和电脑是在同一个局域网,在手机中,打开浏览器,访问http://本机IP:8888(Fiddler默认端口,可以自行设置) 5.访问成功的话,会显示: 点击,可以下载FiddlerRoot 证书 6.安装证书 7.设置代理 在网络中进行设置代理 这样就可以在Fiddler中找到手机的会话请求了,可以进行过滤观察,在Inspector的Raw模式中可以查看url,然后通过py的requests库进行下载查看,注意不要忘了请求的headers

最新回复(0)