Шари за HTTPS-запитом Mechanize через проксі
Подивіться, як Mechanize, модуль протоколу HTTPS із LWP і SSL-бекенд спільно маршрутизують, тунелюють і перевіряють один HTTPS-запит.
Задайте маршрут на об'єкті Mechanize перед отриманням:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);
Використовуйте передбачуваний HTTP-слухач із прикладу; для дозволених запитів до публічних цілей кандидати містяться в списку HTTP-проксі. Масив називає схеми призначення. Кінцева точка http:// забезпечує звичайний маршрут CONNECT для HTTPS: HTTP до проксі, тунель до цілі, потім TLS цілі. Якщо розгортання натомість використовує змінні середовища, альтернативою є $mech->env_proxy; їх подальший імпорт може змінити маршрут, заданий у коді.
Mechanize успадковує мережеві можливості LWP::UserAgent, а не надає окремий механізм HTTPS-проксі:
- Mechanize надає посилання, форми та поведінку поточної сторінки.
- LWP::UserAgent і його HTTP-транспорт вибирають маршрут і організовують CONNECT.
- LWP::Protocol::https забезпечує обробку HTTPS і оновлює з'єднання.
- Net::HTTPS зі своїм SSL-бекендом надає сокет із підтримкою TLS, зазвичай IO::Socket::SSL у сучасних конфігураціях.
Встановлений SSL-бекенд сам не вибирає проксі. Зберігайте початкове ім'я HTTPS-хоста в URL: прийняття CONNECT не перевіряє сертифікат цього сайту.
Підтримуючи старі компоненти, розрізняйте ці межі. libwww-perl 6.06 і окремо розповсюджуваний LWP::Protocol::https 6.06 запровадили узгоджені виправлення для звичайного HTTP CONNECT. Лише версія UserAgent не ідентифікує модуль HTTPS. LWP::Protocol::https 6.15 додав виправлення для проксі-ендпоінтів із TLS, чия схема https:// додає TLS до проксі перед TLS цілі.
Старіші конфігурації Net::SSL/Crypt::SSLeay можуть натомість використовувати задокументований механізм середовища HTTPS_PROXY цього бекенду. Не застосовуйте його рецепт до сучасного шляху IO::Socket::SSL, де маршрутизацією володіє LWP.
Використовуйте перший невдалий етап для вибору компонента: відсутній обробник HTTPS стосується модуля протоколу; відхилений CONNECT стосується маршруту, облікових даних або політики; помилка сертифіката після тунелю стосується ідентичності та довіри до цілі. Зберігайте перевірку, змінюючи компонент, який підтверджується цими даними.