กำหนดเส้นทางบนออบเจ็กต์ 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 ที่ถูกปฏิเสธเกี่ยวกับเส้นทาง ข้อมูลรับรอง หรือนโยบาย ข้อผิดพลาดใบรับรองหลังอุโมงค์เกี่ยวกับตัวตนและความไว้วางใจของปลายทาง รักษาการตรวจสอบไว้ขณะเปลี่ยนคอมโพเนนต์ที่หลักฐานนั้นสนับสนุน

บทความที่เกี่ยวข้อง