欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python爬虫防封ip的一些技巧

程序员文章站 2022-09-22 20:31:57
在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封ip,就不能继续爬了。在爬取大数据量的数据时更是瑟瑟发抖,时刻担心着下一秒ip可能就被封了。本文就如何解决这个问题总结出一些应对措施...

在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封ip,就不能继续爬了。在爬取大数据量的数据时更是瑟瑟发抖,时刻担心着下一秒ip可能就被封了。

本文就如何解决这个问题总结出一些应对措施,这些措施可以单独使用,也可以同时使用,效果更好。

伪造user-agent

在请求头中把user-agent设置成浏览器中的user-agent,来伪造浏览器访问。比如:

headers ={'user-agent':'mozilla/5.0 (x11; linux x86_64) applewebkit/537.36 (khtml, like gecko) chrome/52.0.2743.116 safari/537.36'} resp = requests.get(url,headers = headers)

还可以先收集多种浏览器的user-agent,每次发起请求时随机从中选一个使用,可以进一步提高安全性:

Python爬虫防封ip的一些技巧

把上面随机选择一个user-agent的代码封装成一个函数:

Python爬虫防封ip的一些技巧

在每次重复爬取之间设置一个随机时间间隔

比如:

time.sleep(random.randint(0,3)) # 暂停0~3秒的整数秒,时间区间:[0,3]

或:

time.sleep(random.random()) # 暂停0~1秒,时间区间:[0,1)

伪造cookies

若从浏览器中可以正常访问一个页面,则可以将浏览器中的cookies复制过来使用,比如:

Python爬虫防封ip的一些技巧

注:用浏览器cookies发起请求后,如果请求频率过于频繁仍会被封ip,这时可以在浏览器上进行相应的手工验证(比如点击验证图片等),然后就可以继续正常使用该cookies发起请求。

使用代理

可以换着用多个代理ip来进行访问,防止同一个ip发起过多请求而被封ip,比如:

附:github上的一个"反反爬虫"项目

道高一尺魔高一丈,你有反爬虫措施,那我也有各种"反反爬虫"的措施,github上就有一位大神专门整理了一个这样的项目:anti-anti-spider,链接地址为:github.com/luyishisi/an可以研究一下。

以上就是python爬虫防封ip的一些技巧的详细内容,更多关于python爬虫防封ip的资料请关注其它相关文章!