Python爬虫:Fiddler的使用和浏览器伪装技术

   Fiddler是一款常见的抓包分析软件,利用Fiddler可以详细地对HTTP请求进行分析,并模拟HTTP请求。

    在爬虫中利用Fiddler,可以帮助我们更快地分析出一些动态网页加载的请求实现方式;

    在有了Fiddler,经过设置之后,本地应用和服务器之间的Request和Response都将经过Fiddler转发,Fiddler以代理服务器的方式存在。

官网下载地址:https://www.telerik.com/fiddler

一般下载完成,安装之后就可以直接使用;

手动设置浏览器使用Fiddler作为其代理的方式:

        浏览器选项—》高级—》网络—》连接—》设置—》手动配置代理—》HTTP代理设置为:127.0.0.1;端口号设置为8888—》确定

设置Fiddler捕获HTTP和HTTPS会话:

Tools—》Options—》HTTPS—》全部勾选—》OK

使用QuickExec命令行:

cls:清屏

select:选择某一类型会话

        select html 选中所有html类型的会话

?:查找出网址中包含某些字符的会话信息

        ?data:查找网址中包含“data”字符串的会话信息

help:打开官方使用手册

Fiddler断点功能:

使用断点可以拦截响应数据,构造请求数据

响应时断点:

        设置方式1:中断所有网址响应信息

                        Rules—》Automatic Breakpoints—》After Responses

                        取消中断设置:

                         Rules—》Automatic Breakpoints—》Disabled

        设置方式2:中断某一网站的响应:

                        bpuafter xxx.yyy.com

                        取消方式:

                        bpuafter

请求时断点:

        设置方式1:中断所有网址响应信息

                        Rules—》Automatic Breakpoints—》Before Requests

                        取消中断设置:

                         Rules—》Automatic Breakpoints—》Disabled

        设置方式2:中断某一网站的响应:

                        bpu 网站 a

                        取消方式:

                        bpu

Fiddler会话查找功能:Ctrl+F

Fiddler的会话过滤:Filters—》Use Filters—》Actions—》Run

# 构造请求头浏览器伪装,设置Fiddler为代理服务器,方便抓包,便于调试

#使用Fiddler作为代理服务器,所爬取的网址要以具体文件或者“/”结尾

比如:http://aaa.bbb/ccc.html或者http://aaa.bbb/ddd/

#Referer一般设置为要爬取的网页的域名地址或对应网站的主页网址
import urllib.requset
import http.cookiejar
url = "http://www.baidu.com/"
# 以字典的形式设置headers
headers = {
	"Connection": "keep-alive"
	"User-Agent": "Mozilla/4.0 (Windows NT 9.0; WOW64) \
	AppleWebKit/527.36 (KHTML, like Gecko) Chrome/65.0.3335.181 Safari/537.36"
	"Accept": "*/*"
	"Referer": "https://www.baidu.com/"
	"Accept-Encoding": "gzip, deflate, br"#可能出现乱码,将该字段设置为utf-8或者gb2312或者省略
	"Accept-Language": "zh-CN,zh;q=0.9"
}
# 设置cookie
cjar = http.cookiejar.CookieJar()
# 设置代理,让Fiddler来监控响应会话
proxy = urllib.requset.RroxyHandle({"http":"127.0.0.1:8888"})
opener = urllib.requset.build_opener(proxy,urllib.requset.ProxyHandler,
	urllib.requset.HTTPCookieProcessor(cjar))
# 建立空列表,为了以指定格式存储头信息
headall = []
# 遍历headers,构造出指定格式的请求头信息
for key,value in headers.items():
	item = (key,value)
	headall.append(item)
# 装饰构造出的请求头信息
opener.addheaders = headall
# 将opener安装为全局
urllib.request.install_opener(opener)
data = urllib.requset.urlopen(url).read()


的的

订单

的的


你可能感兴趣的:(爬虫)