Python爬虫中遇到JS反爬,除了selenium还有哪些解决方案?
null
Python爬虫中遇到JS反爬,除了selenium还有哪些解决方案?
对于JS反爬,除了Selenium还有几个更高效的方案:
- 直接调用JS引擎:用PyExecJS或Node.js子进程执行关键JS代码。比如遇到加密参数时,直接抽离网站JS中的加密函数本地执行:
import execjs
with open('encrypt.js') as f:
ctx = execjs.compile(f.read())
result = ctx.call('getEncryptedParam', 'data')
-
逆向分析网络请求:用Chrome开发者工具的Network面板,找到JS最终发送的真实API接口。很多网站的数据其实是通过XHR/Fetch请求获取的,直接模拟这些请求更简单。
-
使用Playwright/Puppeteer的无头模式:比Selenium轻量,能生成真实的浏览器环境但资源消耗更小:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto(url)
content = page.content()
- 找数据接口的替代源:有些网站有移动端API或遗留的未加密接口,参数更简单。
建议优先尝试逆向真实接口,实在不行再用无头浏览器。
- 很多 js 反爬 ,selenium 是解决不了的,大多需要剖析 js,执行 js 代码才能得到有效参数
2. 各种加密算法,url 中拼接的某些参数是底层算法搞出来的
脱裤啊
JS 爬虫和 Python 有什么关系
还有 puppeteer,也是调用 chrome 来执行 js,但是对用户比较友好。顺便介绍一下爬虫平台 Crawlab,兼容任何框架任何语言的爬虫平台,http://github.com/tikazyq/crawlab
存在 js 反爬也有很多情况呀, 内容加密,token 生成啥的, 你的是哪种啊
也有反 selenium 的
大部分的 js 反爬都可以通过 python 运行 js 来解决,
不过会提这种低质量的问题,
多半也不会这些基本的东西。
那么多 js 还能都运行了?
我只找到了 cookie 加密,还可以怎么找
cookie 加密一般来说相较与参数加密,更难找到入口点,需要很多的调试技巧,比如有时需要 hook,hook 不住的时候如何处理等等,我简书 https://www.jianshu.com/nb/14730171 的几个例子就是基于 nodejs 实现的,如何用 py 运行,只是一个调用方式的问题,不行的话还可以用 node 封装接口,重要的是如何模拟加 /解密


