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可以对已经混淆的代码进行还原,反控制流平坦化。