Python常见反爬与反反爬
文章插图
一. request请求头限制
私信小编01即可获取大量Python学习资料
accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9accept-encoding: gzip, deflate, braccept-language: zh-CN,zh;q=0.9cache-control: max-age=0cookie: tk_trace=1; cna=7wYkFzKHTRkCAWVESJJhr0Rk; t=4e6cd6cf819ddd364dd4523f505baa2f; _tb_token_=5554b3163eaef; cookie2=12300b27c30b8ed3f53ba4ad905804d0; dnk=%5Cu98CE%5Cu98DE%5Cu6C99199466; uc1=existShop=false uc3=nk2=1CBFSnyurVPg%2Fx88 tracknick=%5Cu98CE%5Cu98DE%5Cu6C99199466; lid=%E9%A3%8E%E9%A3%9E%E6%B2%99199466; uc4=id4=0%40UOBStC8CkE5rQcpcdQo%2BD5R3J0dZ lgc=%5Cu98CE%5Cu98DE%5Cu6C99199466; login=true; csg=b7e69528; enc=Oo1TNahCShvmFW61yPFP4GttpSDCrFL4hkqM7h3Adt3O013%2Ffmx4eeJ02je0Few2er4Lg75OjFjZz%2BC1Ydq7cA%3D%3D; _med=dw:1920 isg=BL29Rz1Mv2lkTxsCtqe23fOvzBm3WvGsmuhil38B2pRCttroRqqofF-nZOrwNglk; l=eBS3_2uPQGGMVdaxBO5Z-urza779VQOffsPzaNbMiIHca1zRGFOgeNQcPN8pPdtjgtfYreKrpPytWReyJqzLROkDBeYC_EaL9cJ9-referer: sec-fetch-dest: documentsec-fetch-mode: navigatesec-fetch-site: same-sitesec-fetch-user: ?1upgrade-insecure-requests: 1user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36
这其中的UA与Cookie是常见的反爬 , 可以使用第三方库 fake_useragent.UserAgent随机生成UA以参数形式加入requests和scrapy等常见爬虫库框架中 。
【Python常见反爬与反反爬】其中 , 针对cookie反爬可以分一下几种情况:
- 开发者工具获取cookie值 , 此时该值恒定不变
- cookie之中存再动态更改的值 , 如:cookie: tk_trace=1; cna=7wYkFzKHTRkCAWVESJJhr0Rk; t=1588996536;常见动态值包括时间戳 , 时间戳加恒定值 , 时间戳加密 , js加密随机数 , js加密指定区间内的随机数等
- 服务端set_cookie给到客户端 , 此时可以通过登录接口或需求数据接口前一页获取相应cookie , 处理后在请求数据
二. IP地址反爬
网站针对访问者的IP监控 , 出现异常(如:同一时间内大量访问) , 此时将IP录入黑名单设置时间封禁 , 解决办法可以自己尝试免费代理IP , 或者第三方IP代理平台 , 也可以动手自己搭建IP代理池(成本较大) 。
三. AJAX异步数据加载
- 通过异步方式延迟数据读取 , 或者重定向到虚拟URL隐藏真实数据 , 此时可以通过开发者工具或抓包工具(fildder)检查数据流量
- 这种请求一般会加上发生重定向的接口响应Cookie或者首页html页面内的指定标签value构建cookie
常见验证码有数字字母识别 , 数字逻辑运算 , 复杂的有滑块滑动 , 图形文字识别 , 简单的识别可以采用python第三方库
pillow, pytesseract 或者机器识别 , 也可以直接入第三方打码平台 。
五 。 JS反爬
js反爬是最为复杂且方式多样的 , 通过js脚本改变每次请求的参数 , 也就是每一次爬取数据都是在变 , 或者数据有js加密
- 告诉|阿里大佬告诉你如何一分钟利用Python在家告别会员看电影
- Python源码阅读-基础1
- Python调用时使用*和**
- 如何基于Python实现自动化控制鼠标和键盘操作
- 解决多版本的python冲突问题
- 学习python第二弹
- Python中文速查表-Pandas 基础
- 零基础小白Python入门必看:通俗易懂,搞定深浅拷贝
- Python 使用摄像头监测心率!这么强吗?
- 十分钟教会你使用Python操作excel,内附步骤和代码