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可以對已經混淆的代碼進行還原,反控制流平坦化。