網絡爬蟲-pyqt5繞過反爬服務

當遇到使用selenium被網站識別爲robot的時候,首先考慮的是換chromedriver,geckodriver,iedriver等,如果都還行不通,那麼可以嘗試修改chromedriver源碼: stackoverflow傳送門

如果都行不通

那麼請嘗試使用pyqt5

pyqt5不僅可以做界面,他還可以調用強大的QtWebKit模塊,QtWebKit是一個基於開源項目 ,WebKit的網頁內容渲染引擎,藉助該引擎可以更加快捷地將萬維
網集成到 Qt 應用中。

舉一個小小的例子:

這裏寫圖片描述

當我們使用selenium登陸淘寶時,出現了滑塊,就算我們用人工去拖動,缺還是會出現無法登陸的情況,因爲淘寶將你識別了出來,這樣你就永遠無法通過驗證了,即使你是打開Selenium的情況下人爲去拖動滑塊驗證碼。

看看pyqt5:

這裏寫圖片描述

可以發現使用pyqt5的時候淘寶官網並沒有發現你是使用的第三方瀏覽器插件。

接下來我們就可以做我們該做的事情。

這裏注意一下,pyqt5驅動的瀏覽器,只能通過注入js來操作頁面,這裏對js的熟練度要求就比較高了,比如利用js拖動滑塊驗證等。

簡易的打開pyqt5瀏覽器的代碼,js需要自己多多練習,比如抓取數據等。

from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl


app = QApplication([])
view = QWebEngineView()
view.load(QUrl("http://www.taobao.com/"))
view.show()
page = view.page()

def test():
    page.runjavascript("your javascript")

view.loadFinished.connect(test)

app.exec_()

selenium的功能還是比pyqt5的瀏覽器強大很多,但是在無法繞過反爬蟲服務的情況下,可以考慮一下pyqt5,比如一打開selenium就被識別出來,distil networks這種反爬蟲服務商,pyqt5是集成的chromium內核源碼,因此不會被識別,但是注入js來操控爬蟲的方式有點蛋疼,還需多多學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章