Lapisan di balik permintaan HTTPS Mechanize melalui proxy
Lihat bagaimana Mechanize, modul protokol HTTPS LWP, dan backend SSL bekerja sama untuk merutekan, menerowongkan, dan memverifikasi satu permintaan HTTPS.
Tetapkan rute pada objek Mechanize sebelum mengambil:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);
Gunakan listener HTTP yang dimaksud dalam contoh; untuk permintaan yang diizinkan ke target publik, kandidat ada di daftar proxy HTTP. Larik menamai skema tujuan. Endpoint http:// menyediakan rute CONNECT biasa untuk HTTPS: HTTP ke proxy, terowongan ke target, lalu TLS target. Jika penerapan menggunakan pengaturan lingkungan sebagai gantinya, $mech->env_proxy adalah alternatifnya; mengimpornya setelahnya dapat mengubah rute yang ditetapkan dalam kode.
Mechanize mewarisi jaringan LWP::UserAgent alih-alih menyediakan mesin proxy HTTPS terpisah:
- Mechanize menyediakan tautan, formulir, dan perilaku halaman saat ini.
- LWP::UserAgent dan transport HTTP-nya memilih rute dan mengatur CONNECT.
- LWP::Protocol::https menyediakan penanganan HTTPS dan meningkatkan koneksi.
- Net::HTTPS dengan backend SSL-nya menyediakan soket yang mampu TLS, biasanya IO::Socket::SSL dalam konfigurasi modern.
Backend SSL yang terpasang tidak memilih proxy sendiri. Pertahankan nama host HTTPS asli di URL: penerimaan CONNECT tidak memverifikasi sertifikat situs itu.
Saat memelihara komponen lama, bedakan batas-batas ini. libwww-perl 6.06 dan LWP::Protocol::https 6.06 yang didistribusikan terpisah memperkenalkan perbaikan terkoordinasi untuk CONNECT HTTP normal. Versi UserAgent saja tidak mengidentifikasi modul HTTPS. LWP::Protocol::https 6.15 menambahkan perbaikan untuk endpoint proxy berkemampuan TLS, yang skema https://-nya menambahkan TLS ke proxy sebelum TLS target.
Konfigurasi Net::SSL/Crypt::SSLeay yang lebih lama dapat menggunakan mekanisme lingkungan HTTPS_PROXY yang didokumentasikan backend tersebut sebagai gantinya. Jangan terapkan resepnya pada jalur IO::Socket::SSL modern, tempat LWP memiliki perutean.
Gunakan tahap pertama yang gagal untuk memilih komponen: penangan HTTPS yang hilang menyangkut modul protokol; CONNECT yang ditolak menyangkut rute, kredensial, atau kebijakan; kesalahan sertifikat setelah terowongan menyangkut identitas dan kepercayaan tujuan. Pertahankan verifikasi saat mengubah komponen yang didukung bukti itu.