网页抓取解密(反爬告诉服务器能够发送哪些媒体类型-Charset告诉)

优采云 发布时间: 2021-12-26 15:14

  网页抓取解密(反爬告诉服务器能够发送哪些媒体类型-Charset告诉)

  反爬虫机制和破解方法总结——什么是爬虫和反爬虫?2. headers 和referer 反爬虫机制 * Headers 反爬虫是最常见的反爬虫策略。*部分网站会检测Referer(上位链接)(机器行为不太可能通过链接跳转实现)实现爬虫。

  头条知识补充***

  host:提供主机名和端口号

  Referer 提供服务器客户端从该页面链接的信息(有些网站会相应地爬回来)

  Origin:Origin字段只收录

发​​起请求的人,没有其他信息。(仅存储在 post 请求中)

  用户代理:发送请求的应用名称(部分网站会根据UA访问的频率间隔进行爬取)

  proxies:代理,有的网站会根据ip访问频率等选择屏蔽ip。

  cookie:具体的标记信息,一般可以直接复制,有些改动可以选择构造。

  (session=requests.session() 自动将cookie信息存储在响应对象中)

  Accept 头为客户端提供了一种方法来通知服务器它的首选项和功能

  标题说明

  Accept 告诉服务器可以发送哪些媒体类型

  Accept-Charset 告诉服务器可以发送哪些字符集

  Accept-Encoding 告诉服务器可以发送哪些编码方式(最常见的是utf-8)

  Accept-Language 告诉服务器可以发送哪些语言

  Cache-control:该字段用于指定在整个请求/响应链中所有缓存机制必须遵守的指令

  三 ip限制

  限制防爬的IP访问频率和数量。

  解决方法:构建自己的IP代理池,然后每次访问时随机选择一个代理(但有些IP地址不是很稳定,需要经常检查更新)

  四大 UA 限制

  UA 使用户能够在访问网站时识别浏览器。

  提醒:

  当然,如果反爬有时间限制,可以在requests中设置timeout(最好是随机sleep,这样会更安全更稳定,time.sleep())

  解决办法是自己搭建UA池,在python每次请求访问时随机挂上UA标志,更好的模拟浏览器行为。

  超级简单的请求头 fake_useragent library()

  #随机请求头

  *敏*感*词*请求

  从 fake_useragent 导入 UserAgent

  ua = 用户代理()

  headers = {'User-Agent': ua.random}

  url ='要抓取的网页的URL'

  resp = requests.get(url, headers=headers)

  ##Pending 补货请求加上睡眠时间

  五.验证码反爬虫或模拟登录

  图片验证码:通过简单的图片识别即可完成

  验证码识别的基本方法:截图、二值化、中值滤波、去噪、分割、压缩和重排(让高矮系统一)、字体特征匹配识别。

  六、Ajax动态加载

  Ajax动态加载的工作原理是:从网页的url加载网页源代码后,JavaScript程序会在浏览器中执行。

  这些程序将加载更多内容并将这些内容传输到网页。这就是为什么有些网页会直接爬取它的网址

  没有数据的原因。

  解决方法:如果使用勾选元素分析“请求”对应链接(方法:右键→勾选元素→网络→清除,点击“加载更多”

  ”,出现对应的GET链接寻找类型text/html,点击,查看get参数或复制Request URL),循环过程。如果“请求”之前有页面,分析导出第一页根据上一步中的URL,以此类推,抓取ajax地址的数据,使用requests中的json解析返回的json,使用eval()转换成字典进行处理

  推荐捕捉工具:fiddler

  七.Cookie 限制

  打开网页后,将生成一个随机 cookie。如果再次打开网页时cookie不存在,再设置一次,第三次打开还是不存在。爬虫很可能正在工作。

  解决方法:将对应的cookie挂在headers中或者按照其方法构造。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线