现在还在爬知乎的同学,想必已经被知乎这个登陆搞得头大了吧,哈哈哈哈哈!!用selenium吧,不行,会被检测出来,用requests构造表单吧,提交的加密参数复杂,而且还不给出那些参数名,知乎的攻城狮为了反爬,很牛B好吧!!!我还试过用selenium结合mitmproxy去修改其中对webdriver检测的那部分js代码参数,以失败告终,可能是我没找对js代码。。。
没关系,现在有新方法可以搞定这个模拟登陆了,不会被检测出来,可以完美的绕过对window.navigator.webdriver的检测,pyppeteer是个好东西!
需要用到的python包:asyncio、pyppeteer
需要自行安装,友情提醒一下,第一次运行pyppeteer的会下载个东东,速度很慢慢慢慢。。。。。。。。。还有可能失败。。。务必耐心等待!!!然后,这个pyppeteer对网速和电脑运行速度还有一定的要求,所以,网速慢、电脑卡的同学,你们很可能要炸。。。。因为我炸了好多次!!其中文教程,在我上篇文章里有给出,有兴趣的可以去看看。
好了,开始正事
下面给出了破解的js代码,只需要用pyppeteer在第一次访问链接的时候在网页中执行这些js代码,构造假的js数据提交给服务器
js1 = '''() =>{
Object.defineProperties(navigator,{
webdriver:{
get: ()