2016-07-02 2 views
0

내가 여기에서 구문 분석 HTML 코드를 시도 봇 탐지와 503 오류가 있습니다 https://opskins.com/?loc=shop_search&app=730_2&search_item=SSG+08+%7C+DARK+WATER+%28Field-Tested%29&sort=lhJSOUP으로 페이지의 코드를 대기시키는 방법은 무엇입니까? 나는

그러나 사이트 Opskins.com 보호 "봇 탐지", 당신이 먼저 사이트를 방문 할 때 가지고 - 당신은 당신이 다음 5 초 정도 기다린한다을 내가 필요로하는 오른쪽 페이지로 리디렉션되거나 다시로드됩니다.

이 페이지에서이 5 초 또는 일부 HTML 코드를 기다리는 방법? 내가 페이지 봇 탐지의 HTML 코드를 취할 수 위의 코드와

Document doc = Jsoup.connect("https://opskins.com" + url) 
      .header("authority", "opskins.com") 
      .header("method", "GET") 
      .header("path", url) 
      .header("scheme", "https") 
      //до сюда с двоеточниями запросы 
      .header("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8") 
      .header("accept-encoding", "gzip, deflate, sdch, br") 
      .header("accept-language", "ru,en-US;q=0.8,en;q=0.6") 
      .header("cache-control", "max-age=0") 
      //.header("cookie", "__cfduid=d76231c8cccdbd5303a7d4feeb3f3a11f1466541718; _gat=1; _ga=GA1.2.1292204706.1466541721; request_method=POST; _session_id=5dc49c7814d5087ac51f9d9da20b2680") 
      .cookie("steamLogin", "76561198065140894%7C%7C0C35CE73983BCA63E456B6A4831DD772D095AE77") 
      .cookie("steamLoginSecure", "76561198065140894%7C%7CCC21BEC8A5E8AD53E9C7086E51BDB8CE407C100A") 
      .cookie("steamMachineAuth76561198065140894", "8857F82DB9960F7B66F7842B5F880229A9AF63AB") 
      .header("dnt", "1") 
      .header("upgrade-insecure-requests", "1") 
      .userAgent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36") 
      //.header("user-agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36") 

      .followRedirects(true) 
      .ignoreHttpErrors(true) 
      //.timeout(5000) 
      .get(); 

.

+0

셀렌 드라이버를 사용했을 때. 나는 다음 자바 코드를했다 : (요소에 의해)'공공 부울 isWaitGood { \t \t 시도 { \t \t \t WebDriverWait 대기 = 새로운 WebDriverWait (드라이버, 60); \t \t \t wait.until (ExpectedConditions.visibilityOfElementLocated (element)); \t \t \t return true; \t \t \t} 캐치 (NoAlertPresentException 예) { \t \t \t \t 반환 거짓; \t \t \t \t \t \t }}' 하고 실행 : '경우 (isWaitGood (By.cssSelector ("div.item 량"))) { \t \t \t StringPrice = driver.findElement (By.cssSelector ("div.item-amount")). getText(); \t \t \t \t} – GoldenScrew

답변

0

간단한 해결책을 드릴 수는 없지만 문제에 대한 숙제를했습니다. 조심스럽게 관찰하면 다소 똑똑한 해결책을 찾을 수있었습니다. 다음은 봇을 통과하는 데 도움이되는 코드입니다.

public class BotDetection { 

    public static void main(String[] args) throws IOException { 
     Document document = Jsoup.connect("https://opskins.com/?loc=shop_search&app=730_2&search_item=SSG%2008%20%7C%20DARK%20WATER%20%28Field-Tested%29&sort=lh") 
     .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:49.0) Gecko/20100101 Firefox/49.0").ignoreHttpErrors(true).followRedirects(true).timeout(100000).ignoreContentType(true).get(); 

     /** 
     * I'm interested in these three elements 
     *  <form id="challenge-form" action="/cdn-cgi/l/chk_jschl" method="get"> 
     *  <input type="hidden" name="jschl_vc" value="53ebdc738d543e1f1fd40f8d4abec414"> 
     *  <input type="hidden" name="pass" value="1467568987.973-p8bu/jSSDf"> 
     *  <input type="hidden" id="jschl-answer" name="jschl_answer"> 
     *  </form> 
     */ 
     Element elementById = document.getElementById("challenge-form"),jschlchild = elementById.child(0), passChild = elementById.child(1); 

     String url = "https://opskins.com".concat(elementById.attr("action")).concat("?") 
       .concat(jschlchild.attr("name")).concat("=").concat(jschlchild.attr("value")).concat("&") 
       .concat(passChild.attr("name")).concat("=").concat(passChild.attr("value")).concat("&jschl-answer=65"); 

     document = Jsoup.connect(url).userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:49.0) Gecko/20100101 Firefox/49.0").ignoreHttpErrors(true).followRedirects(true).timeout(100000).ignoreContentType(true).get(); 

     //Bingo You are done. 
     System.out.println(document.body()); 
    } 

jschl-answer = 65를 전달하지 않아도 작동했습니다.

+0

코드는 기본 페이지를 엽니 다. http://opskins.com 문제없이 열 수 있습니다. 나는 이것을 열어야한다 : [https://opskins.com/?loc=shop_search&app=730_2&search_item=SSG+08+%7C+DARK+WATER+%28Field-Tested%29&min=&max=&sort=lh&stat=&grade=&exterior=&type= ] (https://opskins.com/?loc=shop_search&app=730_2&search_item=SSG+08+%7C+DARK+WATER+%28Field-Tested%29&min=&max=&sort=lh&stat=&grade=&exterior=&type=) – GoldenScrew