瀏覽器安全檢查5秒解決方案
瀏覽器安全檢查5秒解決方案
最近在做一個爬蟲的時候遇到了瀏覽器安全檢查的情況:
使用fiddler進行抓包分析
我們可以看到第一次訪問網頁返回的響應碼是503,因為沒有攜帶cookie
然後5秒之後自動跳轉到第三個請求,第三個請求的url為
http://www.machineryinfo.net/cdn-cgi/l/chk_jschl?jschl_vc=59dc97dc709d5d42b4907dea5483df37&pass=1514166702.677-IddoE%2FcQMm&jschl_answer=544
我們分析一下第一個請求的響應體
<script type="text/javascript">
//<![CDATA[ (function(){ var a = function() {try{return !!window.addEventListener} catch(e) {return !1} }, b = function(b, c) {a() ? document.addEventListener("DOMContentLoaded", b, c) : document.attachEvent("onreadystatechange", b)}; b(function(){ var a = document.getElementById('yjs-content');a.style.display = 'block'; setTimeout(function(){ var s,t,o,p,b,r,e,a,k,i,n,g,f, uyKdOwL={"qeULyPtNFAQh":+((+!![]+[])+(!+[]+!![]+!![]+!![]))}; t = document.createElement('div'); t.innerHTML="
請開啟瀏覽器的javascript,然後重新整理瀏覽器machineryinfo.net 瀏覽器安全檢查中...還剩 5 秒… |
發現第三個請求的三個引數在原始碼中都有體現,
jschl-answer這個值需要我們自己進行計算
uyKdOwL={“qeULyPtNFAQh”:+((+!![]+[])+(!+[]+!![]+!![]+!![]))};
uyKdOwL.qeULyPtNFAQh*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));
uyKdOwL.qeULyPtNFAQh-=+!![];
uyKdOwL.qeULyPtNFAQh+=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]));
a.value = parseInt(uyKdOwL.qeULyPtNFAQh, 10) + t.length;
1
2
3
4
5
經過分析原始碼中的js,發現jschl-answer 即為a.value,t.length是21,uyKdOwL.qeULyPtNFAQh是經過重重計算得到的,+((+!![]+[])+(!+[]+!![]+!![]+!![])) 可以看做是經過加密的js程式碼,在chrome控制檯中直接執行可以看到實際上是14,*=35,-=1,+=34,然後再加上t.length(21),結果就是544,就是第二個請求中最後一個引數的值
然後獲取到了url就可以模擬請求,在進行該請求前等待4秒,模擬js中的setTime方法,然後該請求的響應頭中會攜帶新的cookie欄位,然後在請求頭中加上該cookie欄位就可以正常訪問網頁了
作者:_Ithrael
來源:CSDN
原文:https://blog.csdn.net/wh01096046/article/details/78893208
版權宣告:本文為博主原創文章,轉載請附上博文連結!