常见反爬策略的解锁方法

用selenium模拟登录不能通过验证

js检测window.navigator.webdriver值

比如淘宝登录,当用selenium驱动浏览器,发现无法通过滑块验证,如下图

当然可以修改这个值就可以绕过去。

简单粗暴的直接赋值是不行的,如

window.navigator.webdriver = undefined

正确的写法是这样的: 

Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});

 

但有时候遇到一些网站用selenium驱动Chrome根本就打不开,即使修改window.navigator.webdriver的值也不行,如信用中国

这个时候可以试试添加excludeSwitches这个参数

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions

option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = Chrome(options=option)

driver.get("https://www.creditchina.gov.cn/xinyongfuwu")

 可以访问了,如图所示

接管已经启动的浏览器

上面的方法并不能彻底解决信用中国的反爬问题,如果把这个搜索过程做成自动化,就会发现发现,ajax不能正确请求,如图

 遇到这种情况,可以先启动一个正常的浏览器,然后用程序去接管

在命令行输入

chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(chrome_options=chrome_options)

 这样,浏览器就被接管过来了。这种方法可以绕过大部分针对selenium驱动浏览器的方法,然而,对信用中国并没有什么卵用

简单粗暴的方法是换个浏览器试试,比如,Firefox,信用中国就可以被绕过去了

from selenium.webdriver.firefox.options import Options
from selenium import webdriver
 
firefox_options = Options()
firefox_options.headless = True
driver = webdriver.Firefox(executable_path=FIREFOX_EXECUTABLE_PATH, options=firefox_options)

ip限制

短时间大量的访问ip会被加入黑名单,但这种方法容易误伤,一般过段时间就会被移出黑名单。

遇到这用情况,有钱的话可以买代理,没钱可以用免费的代理,缺点是很不稳定,当然也可以降低爬虫速度。

具体加代理的方法可以参考我的另一篇blog《python配置有权限代理解决方案》

参数签名

有时候抓api会发现api中有个签名字段,即对请求参数做一个签名,服务端收到请求后会验证签名是否有效,如网易云音乐,海拍客等网站,有的网站甚至会给返回的数据也加密,需要前端的js来解密,如中国空气质量在线监测分析平台|城市分析。对于中情况,就耐心的找出那段签名或加密的js代码,给自己的请求签名。

可以参考我的另一篇blog《破解某电商js签名api》

有时候也会浏览器端会生成一个字符串并写入cookie中,有使用次数限制,比如同花顺的K线数据接口,遇上这种情况可以简单粗暴的用selenium抓取cookie存入redis做为一个cookie池

验证码

找个打码平台,直接打码,比自己重新开发性价比高,如果遇到复杂的验证码,基本思路,划归,即把复杂的验证码处理成打码平台可以识别的样子,比如国家税务总局全国增值税发票查验平台,这个网站需要根据提示识别指定颜色的验证码,具体可以参考我的另一篇blog《选择某种颜色字母的验证码破解方法

输入框监控

有些网站会用js监控输入按键事件,根据按键行为特征来判断人机,如亚马逊的vendor登录,破解思路是模拟敲键盘的停顿,即在每次按键后随机停顿个几百毫秒

refer监控

有的网站会根据refer的来判断当前的请求是否合法,即当前访问的页面必须由一些合理的页面跳过来,如MM131美女图片,爬这个网站的图如果访问某页的refer是从离它比较远的页面,则会返回403,比如,爬一个妹纸的第18张图片,但refer是第一张图片的地址就被禁止访问,处理办法是动态的修改refer引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值