基于cookie-Agent反爬解决方式(二)机制

优采云 发布时间: 2021-07-28 22:01

  基于cookie-Agent反爬解决方式(二)机制

  前言

  反爬虫是网站用来压制爬虫以维护其核心安全的一种方法。反爬虫的方法有很多。一般情况下,除网站如百度外,反爬虫机制会经常更新。为了保持网站 的高效运行,网站 并没有采用过多的反拼写机制。今天分享几个我在爬行过程中遇到的反拼写机制,并简单介绍一下他们的解决方案。

  基于User-Agent的防爬

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

  解决方案:

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

  代码示例:

  

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

  代码示例:

  

  2 基于IP的防爬

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

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

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

  代码示例:

  

  3 基于cookie的反采摘

  简介:网站 将通过 cookie 跟踪您的访问。如果发现爬行,您的访问会立即中断,例如非常快速地填写表格,或在短时间内浏览大量页面。并且正确处理cookies可以避免很多采集问题。建议大家在采集网站过程中查看网站生成的cookies,再考虑爬虫需要处理哪一个。

  解决方案:

  一次人工处理

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

  二次自动处理

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

  代码示例:

  #基于session cookiessess = requests.Session()#自动处理#这个请求只是抓取sess sess.get(url='/',headers=headers)url ='/v4/statuses/中存储的cookies 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

  4 图片延迟加载

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

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

  示例代码:

  

  5 Ajax 动态加载

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

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

  推荐抓包工具:fiddler

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线