2016-07-12 21 views
0

Erstens, Dies ist keine doppelte Frage, weil ich bereits fast alle 503/Roboter Index Probleme überprüft haben. Keines von ihnen hat mein Problem gelöst. Ich versuche eine Werbeliste von indiegala.com zu bekommen, aber diese Seite hat eine Art Schutz, um Bots und Roboter zu verhindern. Mein Zweck ist nicht illegal, ich möchte nur eine Werbeliste bekommen und dann Spiele überprüfen, ob sie Dampfhandelskarten haben oder nicht. Aber richtig, Indiegala gibt mir einen Roboterindex. Derzeit verwende ich diesen Code;Java jsoup html Analyse Roboter Index/Bot Erkennung, noindex

 String url = "https://www.indiegala.com/giveaways"; 
    try { 
     String content = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36").ignoreHttpErrors(true).followRedirects(true).get().html(); 
     System.out.println(content); 
    } catch (IOException ex) { 
     System.out.println(ex.toString()); 
    } 

Um die Ausgabe (Quelle der Website, in meinem Code, Variablen „Inhalt“) zu sehen, die Sie den Code ausführen können, die ich habe, ich Ausgang hier nicht hinzufügen kann, weil es ein wenig lang ist. Aber es sieht so aus;

<head> 
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW" /> 
</head> 

Wie kann ich diesen Schutz bestehen? Kann mein Programm wie ein Mensch vorgehen, um diesen Schutz zu bestehen?

Antwort

0

Ich habe mir Ihren Fall angesehen und herausgefunden, wie Sie die Robotererkennung umgehen können.

Was Sie brauchen, ist cookies. Im folgenden sehen Sie den Code ein:

String url = "https://www.indiegala.com/giveaways"; 

Document doc = Jsoup.connect(url) 
      .userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36") 
      .header("cookie", "incap_ses_436_255598=zI1vN7X6+BY84PhGvPsMBjKChVcAAAAAVhJ+1//uCecPhV2QjUMw6w==") 
      .timeout(0) 
      .get(); 

Dies sieht aus wie eine bestimmte Cookies, die die Website erfordert, und es an den Header hinzugefügt hat ich erfolgreich den eigentlichen Website-Inhalt :)

HINWEIS: Im Allgemeinen, wenn Sie begegnen In Situationen wie diesen können Sie das Chrome-Entwicklertool verwenden, um die von Chrome gesendete Anfrage zu überprüfen und anschließend in Ihrer Jsoup-Anfrage zu replizieren :)

+0

Danke für Ihre Antwort :) wenn ich diesen Code versuche, gibt es mir "403 HTTP-Fehler beim Abrufen der URL. Status = 403". Dann habe ich versucht, ignoreHttpErrors (true) hinzuzufügen. Code funktioniert ohne Fehler, gibt mir aber immer noch Roboterindex:/Ich glaube ich brauche meinen eigenen Cookie :) aber ich weiß nicht, wie ich mir einen holen kann :) –

-1

Das ist mein Fall. Das könnte helfen. Der Roboterdetektor hat meinen Browser-Agenten erkannt und das bekannte Captcha "Please Show I am not Robot" gezeigt. Zuerst wurde das Chrome-Plugin in this address verwendet. Der Header, der an die Website übergeben wurde, wurde angezeigt und die Cookies und userAgent waren bekannt. Ich kopierte nur den Cookie und userAgent, die dort in meinem Code angezeigt werden und jedes Mal, wenn der Roboter erkannt wird, überspringe ich das Captcha manuell mit meinem residenten Browser.

Doc = Jsoup.connect(URL_String) 
    .userAgent("Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36")  
    .header("cookie","AWSALB=7ygHW4oBnXOkLMVFehmoTM8F1lLfDiTJVVeP5DTIw4dpGgQ4o2F5mYYm4bvCkJul1nkWqAjq9s0pKojKFqdP7wRm/NX/Ye2ntYKwtlOhVvA4dwSM8QTn1uwi4jgI; Expires=Fri, 24 Nov 2017 11:37:10 GMT; Path=/") 
    .timeout(0) 
    .get();