Python爬虫防封ip的一些技巧

作者:小雨 时间:2022-07-02 20:03:44 

在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封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,比如:

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

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

来源:https://cloud.tencent.com/developer/article/1581239

标签:Python,爬虫,防封,ip
0
投稿

猜你喜欢

  • MySQL的数据库数据备份和恢复详解

    2012-01-29 18:19:07
  • python 控制语句

    2022-09-19 08:12:02
  • Python光学仿真学习处理高斯光束分布图像

    2022-09-11 05:29:50
  • Django+Nginx+uWSGI 定时任务的实现方法

    2022-11-14 16:02:57
  • Python爬取智联招聘数据分析师岗位相关信息的方法

    2021-04-23 15:01:02
  • 文字解说Golang Goroutine和线程的区别

    2023-10-15 18:56:36
  • 浅析ThinkPHP中的pathinfo模式和URL重写

    2024-05-03 15:50:39
  • Python英文文本分词(无空格)模块wordninja的使用实例

    2022-05-12 07:10:16
  • python 实现控制鼠标键盘

    2023-08-04 09:37:56
  • MySQL命令行导出与导入数据库

    2024-01-14 03:30:14
  • ASP运行环境iis和pws的搭建

    2007-09-22 18:44:00
  • Python使用Scrapy保存控制台信息到文本解析

    2022-04-12 20:29:00
  • sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)

    2011-09-30 11:49:22
  • 2007/12/23更新创意无限,简单实用(javascript log)

    2024-04-26 17:11:46
  • smarty缓存用法分析

    2024-06-07 15:44:41
  • 浅谈Python中用datetime包进行对时间的一些操作

    2022-09-27 09:32:14
  • DjangoRestFramework 使用 simpleJWT 登陆认证完整记录

    2021-03-29 18:34:12
  • sql语句将数据库一条数据通过分隔符切割成多列方法实例

    2024-01-15 02:24:45
  • python中os模块和sys模块的使用详解

    2021-08-29 21:42:35
  • pytorch查看torch.Tensor和model是否在CUDA上的实例

    2023-06-16 16:41:22
  • asp之家 网络编程 m.aspxhome.com