寫得不全 敬請諒解!開始吧
說實話,其實當我看猿人學十九題得時候, 其實解決了但是沒有理解它得原理,直到我昨天看了一篇大佬得文章,得到了它得原理。
鏈接 https://www.cnblogs.com/Eeyhan/p/15662849.html
它是檢測了指紋,tls指紋。這里是ja3指紋
關於指紋得文章可以看 https://mp.weixin.qq.com/s/Qx7PjnBgrTR30oCurU6CGw
其實不管是 還是fillder抓包 還是Charles 都是會被檢測到得。
這里推薦 wireshark抓包:
需要用最新版的wireshark才能看到ja3指紋,因為ja3指紋是基於tls1.3的,舊版的wireshark只能看到tls1.2及以下的
最新版下載地址:https://www.wireshark.org/download.html
通過看protocol可以看到它是tls, 然后我們點開client hello那個包
滑倒最后可以看到它是ja3指紋檢測
關於ja3指紋 在上面我也提到過,大家可以去看下那篇文章。
我們知道requests 是基於 urllib3 實現的。要修改 JA3 相關的底層參數,所以我們今天要修改 urllib3 里面的東西。
我們知道 JA3 指紋里面,很大的一塊就是 Cipher Suits,也就是加密算法。而 requests 里面默認的加密算法如下:
ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES:!aNULL:!eNULL:!MD5
我們可以通過修改request里面得默認算法來進行繞過 讓我們得指紋長度小於等於瀏覽器指紋得長度就可以了
在 requests 里面,要修改 Cipher Suits 中的加密算法,需要修改 urllib3 里面的 ssl 上下文,並實現一個新的 HTTP 適配器 (HTTPAdapter)。在這個適配器里面,我們在每次請求的時候,隨機更換加密算法。但需要注意的是!aNULL:!eNULL:!MD5
就不用修改了,讓他們保持在最后。但是這里不需要那么得麻煩,直接在寫代碼得時候標注一下,貼上我得代碼 其實原理跟我看得大佬那篇原理是差不多得,都是讓生成得指紋長度小於瀏覽器得長度。
其實原理都大徑相同,可能寫得不是很全,忘理解 不過我該解釋也解釋到了