1. 程式人生 > >瀏覽器安全檢查5秒解決方案

瀏覽器安全檢查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="

x"; t = t.firstChild.href;r = t.match(/https?:\/\//)[0]; t = t.substr(r.length); t = t.substr(0,t.length-1); a = document.getElementById('jschl-answer'); f = document.getElementById('challenge-form'); ;uyKdOwL.qeULyPtNFAQh*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));uyKdOwL.qeULyPtNFAQh-=+!![];uyKdOwL.qeULyPtNFAQh+=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]));a.value = parseInt(uyKdOwL.qeULyPtNFAQh, 10) + t.length; '; 121' f.submit(); }, 4000); }, false); })(); //]]>

請開啟瀏覽器的javascript,然後重新整理瀏覽器

machineryinfo.net 瀏覽器安全檢查中...

還剩 5 秒…

      <div class="attribution"><a href="http://su.baidu.com/" target="_blank" style="font-size: 12px;"></a></div>
  </td>
</tr>

發現第三個請求的三個引數在原始碼中都有體現,

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
版權宣告:本文為博主原創文章,轉載請附上博文連結!