![62db3b7d45467668bc9b920223fdece8.png](https://i-blog.csdnimg.cn/blog_migrate/c48ea577a79d1104f80b04db80aa7b59.jpeg)
1. 抓包工具
1.1 浏览器本身自带
右键审查元素--》点击network--》点击请求,右边栏请求详细信息
观察右边栏:request、headers、response(上一篇文章演示过)
query string:get 参数(以搜狗浏览器为例,任意点击一个加载选项)
![a3c6fb85a065598a2cfa29f67e316c6b.png](https://i-blog.csdnimg.cn/blog_migrate/6ff214c4f89a2ba07483e1e7d3d344fc.jpeg)
Form data:post参数(一般为登录界面)
![51a94071969f1749a4d690373156fba3.png](https://i-blog.csdnimg.cn/blog_migrate/1b6f5da96a555632929aadfb0e494d97.jpeg)
![248e172f3441ed0da7edf94316ff9054.png](https://i-blog.csdnimg.cn/blog_migrate/3621481ba853a435c400b7697c5cc2d6.jpeg)
1.2 Fiddler
1.2.1 什么是fiddler
![6a2a846b24e697a2fc2a07c6ae7f2d18.png](https://i-blog.csdnimg.cn/blog_migrate/5551a7c32a65daa52ccaf7b323ee189e.jpeg)
Fiddler是一个HTTP协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指 cookie、html、js、css等文件)。也就是说,它起到了一个中介的作用,将我们的电脑与互联网之间连接起来,并且收集到所有的电脑和互联网之间传输的数据。(将你的电脑和网络连接起来,抓取之间所传输的所有数据。电脑<-->fiddler<-->网络)
1.2.2 下载和安装
Fiddler官网:https://www.telerik.com/fiddler
a 首先点击网页右侧download now
![978ccfc993fa4592593377868bc3bdf4.png](https://i-blog.csdnimg.cn/blog_migrate/eb9fadc54a1fb0d6bb90787b5ef9ee80.jpeg)
b 然后进入如下页面,可以随便填写信息,然后点击下载安装包就可以了(我已经尝试过了)
![a25794866878f08ad97676c0322be242.png](https://i-blog.csdnimg.cn/blog_migrate/cde6c312e8cb7077a1102075b5aa3aab.jpeg)
c 最后进行安装,和以前安装一样,按照步骤进行下去,此处不过多赘述。
1.2.3配置 (点击进入fiddler)
Tools--》options--》HTTPS
选中 capture HTTPS...、decrypt https trafic... 、ignore 。。。
![c2479a4c2029fe1c2dbc3287062bb298.png](https://i-blog.csdnimg.cn/blog_migrate/40bc4278122ff531115f07d07bce9207.jpeg)
![0e540af257d20c6de6627ffffb661206.png](https://i-blog.csdnimg.cn/blog_migrate/62a25d8cb7219022ffbe0ce9d1d70e2a.jpeg)
Tools--》options--》HTTPS
点击Actions ,然后点击第一个
![4bb0267fae67b92f780e7bbca5722179.png](https://i-blog.csdnimg.cn/blog_migrate/e39393545dbd493fb362d8370e611f1c.jpeg)
![2fe81116cb43858d19b126cae3ee4f87.png](https://i-blog.csdnimg.cn/blog_migrate/9321f4098aa58e6137ea13db7c19112c.jpeg)
![8f3bc69f03290a00a492fe4db8563d43.png](https://i-blog.csdnimg.cn/blog_migrate/de48215ffc9626ec77adbfd5dfa8dc9b.jpeg)
一直点击就可以完成,fiddler关闭重启
1.2.4 Fiddler常见图标
![d5b62b83c07fa850db6193a646781291.png](https://i-blog.csdnimg.cn/blog_migrate/c943d00a6409b70e69d6f340edf52c06.jpeg)
1.2.5 抓包
我们以后主要查看的是{json}格式:json数据、{css}:css文件、{js}:js文件
停止抓取:file--》capture 点击,将对钩取消
![5bedd02c4441a2aa0987f2a93d48d690.png](https://i-blog.csdnimg.cn/blog_migrate/1f5f5c08bf4b796f22852c6269e26d6c.jpeg)
点击请求,右边选中inspectors
![5471a34fd8fc4acb3dc939fba496fcd3.png](https://i-blog.csdnimg.cn/blog_migrate/a8ac3c41e760969137f448234e30b6f4.jpeg)
![26c2c283fd13e547433f2c17a500dd0c.png](https://i-blog.csdnimg.cn/blog_migrate/d77c39096a1c981f42ae868c5cde7d84.jpeg)
右上:HTTP请求信息
Raw——请求头部的详细信息
![6e0f128b6147776b4dcf6a9ff4cd37e0.png](https://i-blog.csdnimg.cn/blog_migrate/1aa32641c1781159aabf9b04e91f8b9e.jpeg)
Webforms——请求所带参数,query_string formdata
![56346a224300019f37bb5d485e9af2cc.png](https://i-blog.csdnimg.cn/blog_migrate/93c5cdb8d0645b3263bd3f222398b5e7.jpeg)
右下:HTTP响应信息
首先点击黄色条进行解码
![a5589b31003b1159163e9062264f4c11.png](https://i-blog.csdnimg.cn/blog_migrate/8521cdec4f48dff5ba2c3fab8b61f1b0.jpeg)
Raw——响应的所有信息
![b1cc0fad3a4d7ab07165749f8c8c5ca7.png](https://i-blog.csdnimg.cn/blog_migrate/13b776fda4b299a58d1bb03475a1a24e.jpeg)
Headers——响应头
![554b6f9d62ae912a0bfbb76f2a671dee.png](https://i-blog.csdnimg.cn/blog_migrate/3c95d1e91f411f1aa59f1867d4f29372.jpeg)
Json——接口返回的内容
![10b00af19bb0f0613f1b55ef73484f0b.png](https://i-blog.csdnimg.cn/blog_migrate/61bab41b9bd7fb56dff1b8a0153edc22.jpeg)
左下黑色框,输入指令
![d9695ad6001c5afab7a2d2842c14f3fd.png](https://i-blog.csdnimg.cn/blog_migrate/96fe53cbbbfb5170b0a3f318387f87a0.jpeg)
Clear:清除所有请求
Select json:就是选择所有json请求
Select image:就是选择所有图片请求
Select HTML:就是选择所有HTML请求
?内容:搜索包含这个内容的所有请求
敲enter执行
2. Urllib库的初认识
模拟浏览器发送请求的库,Python自带的库
2.1 字符串与字节之间的转化
2.1.1 字符串(string)--》字节之间的转化(bytes) Encode()
![0f1d1507a43a4f0054083b57a49beb7e.png](https://i-blog.csdnimg.cn/blog_migrate/cc385a092f717e1c966dafae72bc93e2.jpeg)
2.1.2 字符串(bytes)--》字节(string)
![1e105bea3988eac9a9a6f96979efd7a3.png](https://i-blog.csdnimg.cn/blog_migrate/ce053bd986bfde3b5d741d62fdb2dc48.jpeg)
如果小括号里面不写参数,默认是utf-8
![0d434c5c6060917fcdcd9c16ebc43c1c.png](https://i-blog.csdnimg.cn/blog_migrate/5837ac854affc70cbd0666f5f6bd0f10.jpeg)
如果写,写gbk
Decode() 字节--》字符串
![31d023e9e766a982ccb57a25252fc6d5.png](https://i-blog.csdnimg.cn/blog_migrate/20dd01e2be37f19f0b95a0ef698d3a37.jpeg)
2.2 urllib.request的属性
urlopen(url) 返回的是响应对象的位置
![6e319a8dd912e823b72380836412d21b.png](https://i-blog.csdnimg.cn/blog_migrate/6f17f2550de61f9fcaa0a9b58a07a462.jpeg)
urlretrieve(url,filename)
![641c19397f48066920b709ea1c9ff8cc.png](https://i-blog.csdnimg.cn/blog_migrate/7b1a153668d0bb1b028720c731c6652c.jpeg)
![2609b22407967b9756dea96210a7f363.png](https://i-blog.csdnimg.cn/blog_migrate/b4dbf6a0e8936fa322d79aac0b754394.jpeg)
![99b9d68ae41db5b806565bfab45e2de1.png](https://i-blog.csdnimg.cn/blog_migrate/b9391b1782746fbad7ed0ab5604f0722.jpeg)
2.3 urllib.parse
(构建url,url只能由特定的字符组成,包括数字、下划线、字母。如果出现其他的,比如$ 空格 中文等,要对其进行编码)
2.3.1 quote
url编码函数,将中文进行编码,转化为%xxxx
1)首先打开浏览器搜索小葵
![086090455bdf6d50654fd32477ff538f.png](https://i-blog.csdnimg.cn/blog_migrate/23d1dacc892a8f6c940247633e22a52a.jpeg)
2)复制链接到编辑器中
![d83aa9995c2ebe58584600a662c13e28.png](https://i-blog.csdnimg.cn/blog_migrate/7f13aba9a9f5fc70f8b785318037aca3.jpeg)
我们就会发现“小葵”变成了“%E5%B0%8F%E8%91%B5”,这些都说明了,网址(url)进行了编码。
3)实现网页(url)编码
![b4eebabe2e909857e24f67b50e6706f4.png](https://i-blog.csdnimg.cn/blog_migrate/9ebf7b300c5e49a12121ebe03b0cf087.jpeg)
2.3.2 unquote url解码函数,将%xxxx转化为中文
![c226850e4fd81e3f0390fcaa94bae4cc.png](https://i-blog.csdnimg.cn/blog_migrate/a651e81c1fc61bd4a1b1ba029a5e31a6.jpeg)
2.3.3 urlencode 给一个字典,将字典拼接为query_string,并且实现了编码的功能。
由于quote不仅给关键字进行编码,同时也使网址本来的格式发生改变,因此给完整的网页进行编码使用urlencode()函数。
1)将所要进行编码的关键字进行定义
2)将关键字写成字典({}表示)
3)用函数拼接为query_string
4)组成完整url
![b50a962969bfbdff52f5335d47ffa434.png](https://i-blog.csdnimg.cn/blog_migrate/a93b39ca5fdfbfe9164a53f64432c92a.jpeg)
2.4response
2.4.1 read() 读取相应内容(源码),内容为字节类型(二进制格式)
![2bdf269b884f23cbc5753909a6aabf83.png](https://i-blog.csdnimg.cn/blog_migrate/1f48c8aa1bfb8d199d9c1ad7ba5441d4.jpeg)
2.4.2 geturl() 获取请求的url
![aa6abc4a637881d5a212fb549a5f2fcc.png](https://i-blog.csdnimg.cn/blog_migrate/c2afaff18852c880d08b1ccfc36c4c74.jpeg)
2.4.3 getheaders() 获取头部信息,列表里面有元祖
![be4a0c91f6c79a2ebea28b3c9897ba49.png](https://i-blog.csdnimg.cn/blog_migrate/3f6a926d61a1b447c6fd950fa54c62d1.jpeg)
2.4.4 getcode() 获取状态码(200是响应成功)
![dc8687e8f136a0741510d0dcbf9792c7.png](https://i-blog.csdnimg.cn/blog_migrate/6c0a8211d862eacf52a143c259b36108.jpeg)
2.4.5 readlines() 按行读取,返回列表,都是字节类型
![981ebbd39b472cb187e7019f713a010b.png](https://i-blog.csdnimg.cn/blog_migrate/eb8597a78c4954ebdefd54263ae26808.jpeg)
3 get 方式
![d69b77717d3d03898b83ce29cba8e62f.png](https://i-blog.csdnimg.cn/blog_migrate/3987663b80c22d79d9ae2deff0e194cf.jpeg)
4 构建请求头部信息
1)运行一下代码
![ea8e0b8fbcc0433b9209ab9f9efe58c8.png](https://i-blog.csdnimg.cn/blog_migrate/9ed38678c237f02fff59b3c0b3451850.jpeg)
2)打开fiddler,再运行代码
![ad4e3aee873998fc69a702474aa03a3d.png](https://i-blog.csdnimg.cn/blog_migrate/88243fa3ba6266542357094ec9a93cb4.jpeg)
本身代码没有出错,但是如果打开fiddler就会报错,原因是因为打开fiddler,表明了是Python去访问,因此访问被拒绝。此时,我们需要添加头部信息。也就是User-Agent 信息,伪装成是浏览器进行访问。
![56340e7cc71534f7b1c1ee913a4e6021.png](https://i-blog.csdnimg.cn/blog_migrate/a6ed270fb3b67d34d816140921590542.jpeg)
4.1 请求头部
4.1.1 认识请求头部信息
打开fiddler,再打开百度,出现以下信息
![78fcd6a55e35ca14bc7579cfca51c975.png](https://i-blog.csdnimg.cn/blog_migrate/3dba03371a75c3a852ad8a88e802818b.jpeg)
![333c2a8709dc935731d32b17b4e1e827.png](https://i-blog.csdnimg.cn/blog_migrate/ffc5cbeccab18075a93973c8770c9674.jpeg)
Accept-encoding:允许压缩类型
User-agent:身份标识(Python) 这时候看是否有反爬机制,如果有就不可以。此时,显示的是浏览器的身份。UA:不同浏览器,ua不同
4.1.2 了解ua
1)在网上搜索ua,可以查看各种浏览器的ua
![bdadc413acb158fadeadcd65a7d351a3.png](https://i-blog.csdnimg.cn/blog_migrate/8cc4239a228112d09fd030bd8760cf8d.jpeg)
2) 伪装自己的UA,让服务端认为你是浏览器在上网
构建请求对象:urllib.request.Request(url=url,headers=headers)
![0ade648dec673972f8658fa9c5ded85f.png](https://i-blog.csdnimg.cn/blog_migrate/6b27c03b2210319181d3607e224a9a28.jpeg)
![b3b240fe115ffae80836f74493355a2f.png](https://i-blog.csdnimg.cn/blog_migrate/f43d9345cc0c4292734b3f7cfad97e84.jpeg)