Java爬蟲網(wǎng)站521返回加密js

爬取加速樂處理的網(wǎng)站


image.png
  • 用postman直接訪問導(dǎo)致521且返回加密js
  • 運(yùn)用java中的ScriptEngineManager腳本引擎處理拿到cookie
    代碼如下:
            CloseableHttpClient client = HttpClients.createDefault();
            HttpGet get = new HttpGet(url);
            //模擬瀏覽器
            get.setHeader("Accept", "Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            get.setHeader("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7");
            get.setHeader("Accept-Encoding", "gzip, deflate");
            get.setHeader("Accept-Language", "zh-cn,zh;q=0.5");
            get.setHeader("Connection", "keep-alive");
            get.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2");
            CloseableHttpResponse response = client.execute(get);
            //請(qǐng)求返回521
            if(response.getStatusLine().getStatusCode()==521){
                HttpEntity entity = response.getEntity();
                String resHtml = EntityUtils.toString(entity);

                //對(duì)返回js處理 拿到j(luò)sl_clearance 
                String jsl_clearance = getJslClearance(resHtml);;
                get.setHeader("Cookie",jsl_clearance);
                response = client.execute(get);
            }
            //拿到最終想要的頁面
            HttpEntity entity = response.getEntity();
            String res = EntityUtils.toString(entity,"utf-8");
            Document doc = Jsoup.parse(res);
          
           /**
             * 獲取加密cookie
             * @param body
            */
            private static String getJslClearance(String body) {
                String jsl_clearance = "";
                ScriptEngineManager manager = new ScriptEngineManager();
                //得到腳本引擎
                ScriptEngine engine = manager.getEngineByName("JavaScript");
                //處理加密js
                String js = body.trim().replace("<script>", "")
                    .replace("</script>", "")
                    .replace("eval(y.replace(/\\b\\w+\\b/g, function(y){return x[f(y,z)-1]||(\"_\"+y)}))",
                        "y.replace(/\\b\\w+\\b/g, function(y){return x[f(y,z)-1]||(\"_\"+y)})");
                try {
                    //得到解密后的js
                    String result = (String) engine.eval(js);

                    String jsl_pre = result.substring(result.indexOf("__jsl_clearance=") + 16,
                          result.indexOf("|'+(function(){var") + 1);
                     String bac = (result.substring(result.indexOf("|'+(function(){"), result.indexOf("+';Expires=") - 23)
                              + result.substring(result.indexOf("+';Expires=") - 16, result.indexOf("+';Expires=") - 4))
                              .replace("|'+(function(){", "").replaceAll("window", "'Chrome'");
                      String jsl_bac = (String) engine.eval(bac);
                      jsl_clearance = "__jsl_clearance=" +jsl_pre + jsl_bac+";";
                      logger.debug(jsl_clearance);
                  } catch (ScriptException e) {
                      e.printStackTrace();
                  }
                  return jsl_clearance;
              }

隨后訪問成功。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ▼ 觀點(diǎn)如潮水逆流 唯獨(dú)心聲不息 文|Jason 有幸在年輕時(shí),因?yàn)楣ぷ鞯脑蚪佑|過幾個(gè)南方城市,在這些城市里,默...
    壹詫閱讀 239評(píng)論 0 0
  • 因?yàn)樽罱幸粋€(gè)項(xiàng)目需要調(diào)用手機(jī)拍照功能,然后將圖片顯示在ImageView中。因?yàn)檫€是小白,所以花了一點(diǎn)時(shí)間去研究...
    歡樂的樂閱讀 2,336評(píng)論 0 6
  • 時(shí)間顆粒度,理解的是時(shí)間管理 制定計(jì)劃提高工作效率的同時(shí)也要學(xué)會(huì)理解,理解跟自己不在一個(gè)時(shí)間顆粒度的人 就...
    Twenty168閱讀 122評(píng)論 0 0
  • 或許這輩子都不會(huì)再見了!
    可愛牛逼帥氣的粉絲閱讀 281評(píng)論 0 0

友情鏈接更多精彩內(nèi)容