Rumah > Java > javaTutorial > Mengapa Saya Mendapat Ralat Terlarang 403 dengan Program Carian Google Java Saya, Tetapi Tidak dalam Penyemak Imbas Web Saya?

Mengapa Saya Mendapat Ralat Terlarang 403 dengan Program Carian Google Java Saya, Tetapi Tidak dalam Penyemak Imbas Web Saya?

Mary-Kate Olsen
Lepaskan: 2024-12-21 09:17:10
asal
120 orang telah melayarinya

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

403 Dilarang dengan Java tetapi Bukan Penyemak Imbas Web: Menyelesaikan Isu Carian Google

Walaupun berjaya mendapatkan semula hasil carian dalam pelayar web, menemui ralat 403 Forbidden apabila cuba mengambil data carian Google menggunakan program Java boleh membingungkan. Punca utama terletak pada ketiadaan maklumat ejen pengguna dalam permintaan Java.

Untuk menyelesaikan isu ini, adalah perlu untuk mensimulasikan gelagat penyemak imbas web dengan menetapkan pengepala "User-Agent":

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();
Salin selepas log masuk

Pengepala ini mengarahkan pelayan untuk menganggap permintaan sebagai berasal daripada pelayar web, yang menghalang ralat 403. Perlu diingat bahawa pengendalian SSL dikendalikan secara automatik.

Walau bagaimanapun, mendapatkan semula jumlah hasil menggunakan Java memerlukan langkah selanjutnya. Anda perlu mengambil kuki dan menghuraikan pautan token ubah hala:

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>
Salin selepas log masuk

Melaksanakan keseluruhan blok kod menghasilkan hasil sebanyak 2930000000L, menunjukkan bilangan hasil carian.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat Terlarang 403 dengan Program Carian Google Java Saya, Tetapi Tidak dalam Penyemak Imbas Web Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan