Heim >Java >javaLernprogramm >Warum erhalte ich in meinem Java-Google-Suchprogramm die Fehlermeldung 403 Forbidden, aber nicht in meinem Webbrowser?

Warum erhalte ich in meinem Java-Google-Suchprogramm die Fehlermeldung 403 Forbidden, aber nicht in meinem Webbrowser?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-21 09:17:10121Durchsuche

Why Do I Get a 403 Forbidden Error with My Java Google Search Program, But Not in My Web Browser?

403 verboten mit Java, aber nicht im Webbrowser: Lösung des Problems mit der Google-Suche

Trotz des erfolgreichen Abrufs von Suchergebnissen in Webbrowsern kommt es zu einem Problem Ein 403 Forbidden-Fehler beim Versuch, Google-Suchdaten mit einem Java-Programm abzurufen, kann rätselhaft sein. Die Hauptursache liegt im Fehlen von User-Agent-Informationen in der Java-Anfrage.

Um dieses Problem zu beheben, ist es notwendig, das Verhalten eines Webbrowsers zu simulieren, indem der „User-Agent“-Header gesetzt wird:

URLConnection connection = new URL("https://www.google.com/search?q=" + query).openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
connection.connect();

Dieser Header weist den Server an, die Anfrage als von einem Webbrowser stammend zu behandeln, wodurch der 403-Fehler verhindert wird. Es ist erwähnenswert, dass die SSL-Verarbeitung automatisch erfolgt.

Das Abrufen des Ergebnisbetrags mit Java erfordert jedoch weitere Schritte. Es ist notwendig, das Cookie abzurufen und den Redirect-Token-Link zu analysieren:

String cookie = connection.getHeaderField("Set-Cookie").split(";")[0];
Pattern pattern = Pattern.compile("content=\\"0;url=(.*?)\\"");
Matcher m = pattern.matcher(response);
if (m.find()) {
    String url = m.group(1);
    connection = new URL(url).openConnection();
    connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
    connection.setRequestProperty("Cookie", cookie);
    connection.connect();
    r = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("UTF-8")));
    sb = new StringBuilder();
    while ((line = r.readLine()) != null) {
        sb.append(line);
    }
    response = sb.toString();
    pattern = Pattern.compile("<div>

Die Ausführung des gesamten Codeblocks ergibt ein Ergebnis von 2930000000L, was die Anzahl der Suchergebnisse angibt.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in meinem Java-Google-Suchprogramm die Fehlermeldung 403 Forbidden, aber nicht in meinem Webbrowser?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn