ホームページ >Java >&#&チュートリアル >Java Google 検索プログラムでは 403 Forbidden エラーが発生するのに、Web ブラウザでは発生しないのはなぜですか?

Java Google 検索プログラムでは 403 Forbidden エラーが発生するのに、Web ブラウザでは発生しないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 09:17:10123ブラウズ

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

403 Java では禁止されているが Web ブラウザでは禁止: Google 検索の問題を解決する

Web ブラウザで検索結果を正常に取得したにもかかわらず、 Java プログラムを使用して Google 検索データを取得しようとすると、403 Forbidden エラーが発生する可能性があります。不可解だ。根本的な原因は、Java リクエストにユーザー エージェント情報が存在しないことにあります。

この問題を解決するには、「User-Agent」ヘッダーを設定して Web ブラウザの動作をシミュレートする必要があります。

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();

このヘッダーは、リクエストを Web ブラウザから送信されたものとして扱うようにサーバーに指示し、403 エラーを防ぎます。 SSL 処理は自動的に処理されることに注意してください。

ただし、Java を使用して結果の量を取得するには、さらなる手順が必要です。 Cookie を取得し、リダイレクト トークン リンクを解析する必要があります:

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>

コード ブロック全体を実行すると、検索結果の数を示す 2930000000L の結果が得られます。

以上がJava Google 検索プログラムでは 403 Forbidden エラーが発生するのに、Web ブラウザでは発生しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。