网站内容更新机制(基于User-Agent反爬解决方法:基于cookie-反爬反爬)

优采云 发布时间: 2022-04-18 23:21

  网站内容更新机制(基于User-Agent反爬解决方法:基于cookie-反爬反爬)

  Python干货:5个解决反采摘机制,

  

  前言

  反爬虫是网站用来维护自身核心安全以抑制爬虫的一种方法。反爬的方法有很多。一般除百度等网站外,反爬机制都会经常更新。为了保持网站的高效运行,网站没有采用过多的反爬机制。今天给大家分享几个我在爬取过程中遇到的反爬虫机制,并简单介绍一下它们的解决方案。

  基于User-Agent的反爬虫

  简介:服务器后台统计访问的User_Agents。如果单位时间内同一个User_Agent的访问次数超过一定阈值,就会不同程度地阻塞IP,导致无法爬取的情况。

  解决方案:

  1.将常用的User-Agents放在ua_list中,以列表的形式随机使用

  代码示例:

  

  二. 加载 fake_useragent 库,随机生成 User-Agent 并添加到 headers

  代码示例:

  

  2 基于IP的反爬虫

  简介:爬虫可能会在短时间内向指定服务器发起高频请求。后台服务器对访问进行计数。如果单位时间内对同一个IP的访问次数超过一定的值(阈值),该IP就会不同程度地被禁止,导致无法进行爬取操作。

  解决方案:使用代理池并设置延迟访问

  如何获取代理服务器?免费:西瓷代理、快速代理、狗版家收费:代理精灵等

  代码示例:

  

  3 基于cookie的反刮

  简介:网站会通过cookies跟踪您的访问过程。如果发现爬虫行为,您的访问将立即被中断,例如非常快速地填写表单,或者在短时间内浏览大量页面。正确处理 cookie 可以避免很多 采集 问题。建议在采集网站的过程中检查这些网站产生的cookies,然后再想想爬虫需要处理哪一个。

  解决方案:

  手动过程

  将 cookie 封装到 headers 字典中,并将字典应用到 get/post 方法的 headers 参数中

  二次自动加工

  需要两次治疗。第一次是捕获cookie并存储在session对象中,第二次是使用携带cookie的session发送请求。这次发送的请求是用cookie发起的请求。您可以像请求一样调用 get/post 来发送请求。在使用 session 发送请求的过程中,如果生成了 cookie,cookie 会自动存储在 session 对象中

  代码示例:

  #基于session自动处理cookiesess = requests.Session()#该次请求只是为了捕获cookie存储到sess中sess.get(url='https://xueqiu.com/',headers=headers)url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20367942&count=15&category=-1'json_data = sess.get(url=url,headers=headers).json()json_data<br />

  4 图片的延迟加载

  简介:图片延迟加载是一种网页优化技术。图片作为一种网络资源,在被请求的时候会占用网络资源,一次加载整个页面的所有图片会大大增加页面首屏的加载时间。为了解决这个问题,通过前后端的配合,图片只在当前浏览器窗口出现时才加载,减少首屏图片请求次数的技术称为“图片懒加载” ”。在网页的源码中,首先在img标签中使用了一个“伪属性”(通常使用src2、original...)来存储真实的图片链接,而不是直接存储在src属性中。当图像出现在页面的可视区域时,

  解决方法:通过仔细观察页面结构发现图片真实链接的伪属性一般不在src中,而是在src2中,xpath应该使用这个属性

  示例代码:

  

  5 Ajax动态加载

  简介:从网页的url加载网页的源代码后,就会在浏览器中执行JavaScript程序。这些程序加载更多内容并将该内容传输到网页。这就是为什么有些网页在没有数据的情况下抓取其 URL。现在这样的网站越来越多了。

  解决方法:使用review元素分析“请求”对应的链接(方法:右键→review元素→网络→清除,点击“加载更多”,出现对应的GET链接找到text/html的类型,点击查看get参数或者复制Request URL),循环过程。如果“请求”之前有页面,则根据上一步的URL分析推导第一页。以此类推,抓取ajax地址的数据。使用requests中的json解析返回的json,遵守动态加载的规则,使用请求头中的规则

  抓包工具推荐:fiddler

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线