Ang mga layer sa likod ng isang Mechanize HTTPS request sa pamamagitan ng proxy
Tingnan kung paano nagtutulungan ang Mechanize, ang HTTPS protocol module ng LWP at ang SSL backend upang i-ruta, i-tunnel at i-verify ang isang HTTPS request.
Itakda ang ruta sa Mechanize object bago kunin:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);
Gamitin ang nilalayong HTTP listener sa halimbawa; para sa mga pinapayagang kahilingan sa mga pampublikong target, ang mga kandidato ay nasa listahan ng HTTP proxy. Pinangalanan ng array ang mga scheme ng destinasyon. Ang endpoint na http:// ay nagbibigay ng ordinaryong rutang CONNECT para sa HTTPS: HTTP papunta sa proxy, tunnel papunta sa target, pagkatapos ay TLS ng target. Kung ang deployment ay gumagamit ng mga setting ng environment sa halip, ang $mech->env_proxy ang alternatibo; ang pag-import sa mga ito pagkatapos ay maaaring magbago ng rutang itinalaga sa code.
Namamana ang Mechanize ng LWP::UserAgent networking sa halip na magbigay ng hiwalay na HTTPS proxy engine:
- Nagbibigay ang Mechanize ng mga link, form at pag-uugali ng kasalukuyang pahina.
- Pinipili ng LWP::UserAgent at ng HTTP transport nito ang ruta at inaayos ang CONNECT.
- Nagbibigay ang LWP::Protocol::https ng paghawak ng HTTPS at ina-upgrade ang koneksyon.
- Nagbibigay ang Net::HTTPS kasama ang SSL backend nito ng socket na may kakayahang TLS, karaniwang IO::Socket::SSL sa mga modernong configuration.
Ang naka-install na SSL backend ay hindi mismo pumipili ng proxy. Panatilihin ang orihinal na HTTPS hostname sa URL: hindi binibigyang-katibayan ng pagtanggap ng CONNECT ang certificate ng site na iyon.
Kapag nagpapanatili ng lumang komponent, pag-ibahin ang mga hangganang ito. Ang libwww-perl 6.06 at ang hiwalay na ipinamahagi na LWP::Protocol::https 6.06 ay nagpakilala ng magkatuwang na pag-aayos para sa ordinaryong HTTP CONNECT. Ang bersyon ng UserAgent lamang ay hindi tumutukoy sa HTTPS module. Nagdagdag ang LWP::Protocol::https 6.15 ng pag-aayos para sa mga endpoint ng proxy na may TLS, na ang scheme na https:// ay nagdaragdag ng TLS sa proxy bago ang TLS ng target.
Ang mas lumang mga configuration ng Net::SSL/Crypt::SSLeay ay maaaring gamitin sa halip ang dokumentadong mekanismo ng environment na HTTPS_PROXY ng backend na iyon. Huwag ilapat ang recipe nito sa modernong IO::Socket::SSL path, kung saan pagmamay-ari ng LWP ang routing.
Gamitin ang unang nabigong yugto upang piliin ang komponent: ang nawawalang HTTPS handler ay tungkol sa protocol module; ang tinanggihang CONNECT ay tungkol sa ruta, mga kredensyal o patakaran; ang error sa certificate pagkatapos ng tunnel ay tungkol sa pagkakakilanlan at pagtitiwala ng destinasyon. Panatilihin ang pagpapatunay habang binabago ang komponent na sinusuportahan ng ebidensyang iyon.