爬虫伪装的最高境界就是用代码来模拟人的真实操作,因为网站就是为了让别人访问而设计的,掌握爬虫的伪装技巧可以大大提高我们爬虫的成功率。下面结合自己的经验,介绍5种爬虫伪装技术,并提供代码模板,希望对大家有所帮助。1、浏览器伪装因为网站服务器很容易识别访问的来源浏览器,以requests为例,默认的header数据中是没有浏览器信息的,在与浏览器交互时简直就是“裸奔”,所以我们可以添加“User-Agent”信息来伪装成真正的浏览器,代码如下:importrequestsheaders={'User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64;rv:88.0)Gecko/20100101Firefox/88.0'}#模拟为Firefox浏览器response=requests.get("http://www.baidu.com",headers=headers)#模拟请求url2.访问地址伪装访问地址是指headers头信息中的refer,那么它有什么作用呢?举个例子说明一下:我在https://bj.meituan.com/里面有一个https://waimai.meituan.com/的链接,然后点这个https://waimai.meituan.com/,它的header里面有在信息中:Referer=https://bj.meituan.com/然后就可以用这个来防盗链了。比如我只允许我自己的网站访问我自己的图片服务器。我们可以添加“refer”信息来伪装访问地址,代码如下:importrequestsheaders={'User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64;rv:88.0)Gecko/20100101Firefox/88.0','reffer':'https://bj.meituan.com/'}response=requests.get("https://waimai.meituan.com/",headers=headers)#模拟请求url3.ip地址伪装对于网络中的反爬虫策略,大部分都是根据单个IP的行为来判断是否是网络爬虫。比如反爬虫检测到某个IP的访问量很大,或者访问频率很快,就会封禁这个IP。这时候我们就不得不选择代理IP来突破反爬虫机制,爬取更稳定和逆行的数据。python添加代理IP的代码如下:importrequestsproxies={'https':'101.236.54.97:8866'}headers={'User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64;rv:88.0)Gecko/20100101Firefox/88.0','reffer':'https://bj.meituan.com/'}response=requests.get("https://waimai.meituan.com/",headers=headers,proxies=proxies)#模拟请求url代理IP可以去网上找免费的,但是不太稳定,或者花钱买一些更稳定的。4、伪装访问率真实用户的访问次数和访问规则是非常稳定的,不会多次访问,所以我们不得不伪装成真实用户来爬取数据,这样反爬虫机制就察觉不到它,并且可以采用控制访问频率的方式,主要是随机设置访问时间。代码如下:importrequestsimporttime,randomproxies={'https':'101.236.54.97:8866'}headers={'User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64;rv:88.0)Gecko/20100101Firefox/88.0','reffer':'https://bj.meituan.com/'}foriinrange(10):response=requests.get("https://waimai.meituan.com/",headers=headers,proxies=proxies)#模拟请求urltime.sleep(random.uniform(1.1,5.4))5.伪装真实用户信息有些网页需要登录爬虫后才会显示数据,cookie值会携带个人登录信息。给爬虫加上cookie值可以免去登录的麻烦,比如知乎、京东等网站。添加方法如下:importrequestsproxies={'https':'101.236.54.97:8866'}headers={'User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64;rv:88.0)Gecko/20100101Firefox/88.0','reffer':'https://bj.meituan.com/'}cookies=''response=requests.get("https://waimai.meituan.com/",headers=headers,proxies=proxies,近期整理了数百G的Python学习资料,包括初学者电子书、教程、源码等,免费分享给大家!想去“Python编程学习圈”,只需发送“J”免费获取
