🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
selenium: selenium不仅仅可以拉起浏览器进行页面访问,还可以对页面进行点击、输入、滑动等脚本操作,selenium可以对cookie进行操作,browser.get_cookies() 就是获取cookies。有时候有的页面会对selenium进行检测,比如对window.navigator对象中是否包含webdriver属性进行检测。正常情况下一般是undefined。解决方法如下: ``` browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{ 'source':'Objec.defineProperty(navigator,"webdriver",{get:() => undefined})' }) browder.get('https://************') ``` selenium还可以实现无头模式,就是没有浏览器窗口弹出,减少图片等资源加载,提高资源使用效率。 splash: splash可以爬取动态渲染的页面,调用splash的API可以对页面进行代码获取,不需要打开浏览器,示例代码如下: ``` import request url = 'http://localhost:8050/render.html?url=https://www.taobao.com&wait=5' response = requests.get(url) print(response.text) #wait=5的意思是等待5秒,以确保页面加载成功 ``` splash的execute可以实现API与Lua脚本的对接,可以通过此方法对网页进行动态渲染,模拟点击,获取页面代码等。 验证码--ocr: 使用tesserocr库进行验证码识别,ocr可以用作普通的数字或者字母验证码识别,把图片转为灰度图像,提高识别成功率,降低干扰点。 还可以使用opencv或者深度学习来实现验证码识别 js反混淆: ast可以对已经混淆的代码进行还原,反控制流平坦化。