Mengambil halaman melalui proxy HTTP di jsoup
Gunakan API proxy HTTP jsoup pada tingkat permintaan dan buat permintaan terpisah ketika beberapa pekerja berbagi pengaturan sesi.
jsoup dapat mengambil halaman melalui proxy HTTP dan mengurai respons dalam panggilan yang sama:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
Nama host dan port bilangan bulat mengidentifikasi proxy. Untuk permintaan halaman publik yang diizinkan, pilih endpoint HTTP dari layanan Anda atau dari daftar proxy HTTP. URL yang diteruskan ke connect tetap menjadi halaman yang Anda inginkan. Anda tidak perlu mengunduh HTML ke dalam string dengan URLConnection terpisah hanya untuk menambahkan rute ini.
proxy(String, int) memilih proxy HTTP untuk permintaan itu. Nomor port seperti 1080 tidak mengubah protokolnya menjadi SOCKS; endpoint proxy harus berbicara jenis yang sedang dikonfigurasi. jsoup juga menyediakan kelebihan beban yang menerima java.net.Proxy, tetapi dukungan untuk rute tertentu tetap bergantung pada implementasi HTTP yang digunakan.
Beri setiap pekerja permintaannya sendiri
Opsi pada tingkat permintaan membuat pekerjaan paralel lebih mudah daripada mengubah properti sistem JVM di sekitar setiap unduhan. Simpan permintaan yang dapat diubah secara terpisah untuk setiap pekerja. jsoup modern dapat berbagi pengaturan dan penyimpanan cookie sesi sambil membuat permintaan baru:
Connection session = Jsoup.newSession();
Document first = session.newRequest()
.url("https://www.example.com/one")
.proxy("proxy-a.example", 8080)
.get();
Document second = session.newRequest()
.url("https://www.example.com/two")
.proxy("proxy-b.example", 8080)
.get();
Panggilan di atas berjalan berurutan demi kejelasan. Jika pekerjaan didistribusikan secara bersamaan, buat permintaan secara independen alih-alih mengubah proxy pada satu Connection yang sedang berjalan. Sesi bersama juga berbagi cookie; gunakan sesi berbeda ketika identitas penjelajahan harus tetap terpisah.
Antarmuka ini ada di jsoup 1.21.2. Antarmuka newRequest() tanpa argumen berasal dari 1.14.1, jadi aplikasi yang lebih lama harus memeriksa dependensinya sebelum mengadopsi contoh sesi.
Kredensial adalah persyaratan tambahan untuk proxy yang diautentikasi. Pemilihan rute yang berhasil tidak menyediakan akun, dan menerima tantangan proxy berbeda dari gagal terhubung ke portnya.