为什么要进行浏览器伪装技术?
有一些网站为了避免爬虫的恶意访问,会设置一些反爬虫机制,对方服务器会对爬虫进行屏蔽。这样就拿不到我们想要的内容。
常见的反爬虫机制
常见的反爬虫机制主要有下面几个:
1. 通过分析用户请求的Headers信息进行反爬虫
2. 通过检测用户行为进行反爬虫,比如通过判断同一个IP在短时间内是否频繁访问对应网站等进行分析
3. 通过动态页面增加爬虫的爬取难度,达到反爬虫的目的
(静态页面是网页的代码都在页面中,不需要执行asp,php,jsp,.net等程序生成客户端网页代码的网页。静态页面不能自主管理发布更新的页面,如果想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件修改。
动态页面是通过执行asp,php,jsp,.net等程序生成客户端网页代码的网页。动态页面常见的扩展名有:.asp .php .jsp .cgi 等。)
针对方法
第一种反爬虫机制在目前网站中应用的最多,大部分反爬虫网站会对用户请求的Headers信息的“User-Agent”字段进行检测来判断身份,有时,这类反爬虫的网站还会对“Referer”字段进行检测。我们可以在爬虫中构造这些用户请求的Headers信息,以此将爬虫伪装成浏览器,简单的伪装只需设置好“User-Agent”字段的信息即可,如果要进行高相似度的路蓝旗伪装,则需要将用户请求的Headers信息中常见的字段都在爬虫中设置好
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
"Connection": "keep-alive",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8"
}
第二种反爬虫机制的网站,可以通过之前学习的使用代理服务器并经常切换代理服务器的方式,一般就能够攻克限制
随机user_agent池:
user_agent_pool = ["Mozilla/5.0 (Macintosh; U; Mac OS X Mach-O; en-US; rv:2.0a) Gecko/20040614 Firefox/3.0.0 ",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3",
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5"}
ip_pool = ['114.230.69.170:9999','61.135.155.82:443']
headers['user_agent'] = user_agent_pool[random.randrange(0,len(user_agent_pool))]
proxy_ip = 'http://'+ip
proxies = {'http':proxy_ip}
r = requests.get(url,headers=headers,proxies=proxies)
第三种反爬虫机制的网站,可以利用一些工具软件,比如selenium+phantomJS,就可以攻克限制。
资料来源:
【1】https://blog.csdn.net/wzyaiwl/article/details/81145395 爬虫笔记(十二)——浏览器伪装技术