搜狗陌陌反爬蟲(chóng)機制剖析及應對方式
優(yōu)采云 發(fā)布時(shí)間: 2020-08-10 04:50最近項目中,由于須要從微信公眾號中獲取一些文章內容,所以用到了搜狗陌陌。一旦搜索的次數稍為多一點(diǎn),就會(huì )觸發(fā)搜狗陌陌的反爬蟲(chóng)機制,最初是須要加上User-Agent懇求頭,后來(lái)是要求輸入驗證碼,現在輸入驗證碼以后,竟然時(shí)常都會(huì )報502,導致爬蟲(chóng)極不穩定。搜狗陌陌的反爬蟲(chóng)機制仍然在更新,特別是近來(lái)的一次更新,更使人一時(shí)半會(huì )兒摸不著(zhù)腦子,也是耗費了好一會(huì )兒時(shí)間進(jìn)行了突破。
下面是對探求過(guò)程的記錄。
首先參考了以下博客:
博主的探求過(guò)程,建議在他的博客中直接進(jìn)行查看,這里我關(guān)注的是他說(shuō)的關(guān)于Cookie的部份。
博主覺(jué)得懇求時(shí),SUID、SUV和SNUID最為重要,我在谷歌瀏覽器中看見(jiàn)以下Cookie
除了兩個(gè)SUID和SUV這三個(gè)Cookie,我對Cookie進(jìn)行了挨個(gè)剔除,并重新進(jìn)行查詢(xún),發(fā)現其他Cookie都是可以手動(dòng)生成的。而且不會(huì )報502,也不會(huì )觸發(fā)驗證碼頁(yè)面。
由于Java中使用Connection.headers(Map cookies)方法,會(huì )導致第一個(gè)SUID被第二個(gè)覆蓋掉(雖然我當時(shí)確實(shí)添加了兩個(gè)SUID),請求也是正常的,所以,我進(jìn)一步提不僅第一個(gè)SUID,發(fā)現刷新頁(yè)面,也沒(méi)有問(wèn)題。
紅框之外的Cookie就會(huì )手動(dòng)生成,也沒(méi)有觸發(fā)驗證碼。只有當我剔除SUV時(shí),才會(huì )觸發(fā)驗證碼機制,從而使輸入驗證碼:
所以,目前為止,需要帶上的Cookie只有SUV!
那么,SUV這個(gè)Cookie怎么獲取呢?
一般來(lái)說(shuō),通過(guò)懇求搜狗陌陌網(wǎng)站,然后獲取到Cookie,作為自己的Cookie使用,但是無(wú)疑會(huì )降低懇求。當時(shí)朋友有個(gè)大膽的看法,說(shuō)試試能不能直接傳一個(gè)32位字符串呢?也真是腦洞大開(kāi)!這里很自然地就想到了UUID,然后將UUID形成的32位字符串轉小寫(xiě)。
想著(zhù)搜狗陌陌不至于做的如此傻吧?但還是試了試,沒(méi)想到還真的通過(guò)了,而且懇求還比較穩定。
綜上,處理辦法是——在懇求搜狗陌陌時(shí),生成一個(gè)名為SUV的Cookie,請求時(shí)加上即可。
UUID的生成方式網(wǎng)上有很多,這里不再贅言,注意除去字符串中的短橫線(xiàn)!
祝你們好運!
參考博客: