爬虫浏览器的伪装技术
一、 三种反爬机制和应对方法:
1、 大部分反爬虫网站会检查用户的”User-Agent”字段。简单的伪装只需要设置好”User-Agent”字段。高相似度的伪装浏览器设置Headers常见字段。
2、 通过获取服务器信息进行反爬。通过使用代理服务器的方式解决。
3、 对于更加复杂的反爬机制的网站,可以运用selenium+PhantomJs联合攻克。
二、 浏览器的准备工作:
1、 打开fiddler,并打开网页查看相应的Headers信息。
2、 Headers中的常见头信息:
字段名 | 意义 |
Accept | 浏览器支持的内容 |
Text/html | 表示HTML文档 |
Applicat/xhtml+xml | 表示XHTML文档 |
Application/xml | 表示XML文档 |
Q | 代表权重系数,一般在0-1之间 |
Accept-Encoding | 浏览器支持的压缩编码 |
Gizp | 压缩编码 |
Deflate | 无损数据压缩编码 |
Accept-language | 浏览器支持的类型 |
Zh-CN | 中文 |
En-us | 英语 |
En | 图包裹托运 |
User-Agent | 用户代理、服务器可以通过该字段识别出客户端浏览器的类型、版本号、客户端的系统操作、网页排版引擎 |
Mozilla/5.0 | 浏览器名和版本信息 |
WindowsNt6.1 | 客户端操作系统对应信息 |
Gec | 网页排版引擎信息 |
Connecteion | 客户端与服务器的连接类型 |
Keep-alive | 持久性连接 |
Close | 单方面关闭连接 |
Host | 请求的服务器网址 |
Refere | 来源网址 |
三、 爬虫浏览器伪装技术实战:
参考代码如下:
import urllib.request
import http.cookiejar
#伪装浏览器
headers = {
"Accept":"text/html,Applicat/xhtml+xml,Application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
"User-Agent": "Fiddler/5.0.20181.14850 (.NET 4.6.2; WinNT 10.0.17134.0; zh-CN; 4xAMD64; Auto Update; Full Instance; Extensions: APITesting, AutoSaveExt, EventLog, FiddlerOrchestraAddon, HostsFile, RulesTab2, SAZClipboardFactory, SimpleFilter, Timeline)",
"Connection": "keep-alive",
"referer":"http://www.163.com/"
}
url = "https://www.baidu.com/"
cjar = http.cookiejar.CookieJar()
proxy = urllib.request.ProxyHandler({'http':"127.0.0.1:8888"})
opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler,urllib.request.HTTPCookieProcessor(cjar))
headll = []
for key,value in headers.items():
item = (key,value)
headll.append(item)
opener.addheaders = headll
urllib.request.install_opener(opener)
data = urllib.request.urlopen(url).read()
print(data)