簽名驗證,與Cookie驗證類似,但是它的數據顯示在XHR類型文件中,是AJAX技術。
對於部分網站,在發送網絡請求時,通過抓包,它發送多個請求,通過分析,它的響應值則在Type 爲 XHR 的響應中,而不是在text/html響應中。
通過PostMan或者代碼發送XHR請求,數據都是爲空或403,就算是帶了User-Agent與Cookie也是一樣。
如:有道翻譯,通過翻譯,返回值都在XHR響應中。
簽名驗證原理:
發送請求時,客戶端生成一些隨機值和不可逆的MD5加密字符串,並在發起請求時將這些值發送給服務器。
當服務器接收到請求時,服務器使用相同的方式對隨機值進行計算以及MD5加密。如果服務器得到的值與客戶端提交的值相等,就返回正常值,否則返回其它(403)
簽名驗證反爬突破:
分析XHR請求數據,有的數據在URL中,有的在Form Data中,找到對應的加密請求數據,查找到對應的.js文件,仔細分析JavaScript代碼產生驗證數據的方式,把對應的代碼轉換成爬蟲編寫的代碼再請求。
簽名驗證個人觀點:
對於簽名驗證,本身是結合AJAX技術,可以說是AJAX技術中的一種,現在很多頁面中,爲了提高效率,都採用了AJAX技術渲染。服務器返回的數據都在XHR響應中。
然而簽名驗證則是以MD5加密爲主要方式進行客戶端與服務器之間的驗證。