การเลือกพร็อกซีแบบรอบวงใน Colly ด้วย SetProxyFunc
ใช้ SetProxyFunc สำหรับการเลือกแบบรอบวง โดยคำนึงถึงผลของ keep-alive การแทนที่ transport และ backend ที่โคลน
collector := colly.NewCollector()
switcher, err := proxy.RoundRobinProxySwitcher(
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
)
if err != nil {
return err
}
collector.SetProxyFunc(switcher)
err = collector.Visit("https://www.example.com/")ใช้ github.com/gocolly/colly/v2 และแพ็กเกจ proxy ของมันในฟังก์ชันของแอปพลิเคชัน โดยคงการจัดการข้อผิดพลาดตามปกติ กำหนดค่าตัวเลือกก่อนที่คำขอหรือการเยี่ยมชมแบบอะซิงโครนัสจะเริ่ม รายการพร็อกซี HTTP ให้ผู้สมัครสาธารณะสำหรับอินพุต endpoint ของตัวสลับ
SetProxy เลือก endpoint แบบคงที่; SetProxyFunc ให้ transport ของ HTTP เลือกในแต่ละคำขอ ซึ่งหลีกเลี่ยงการแทนที่การกำหนดค่าที่ใช้ร่วมกันภายใน callback OnRequest แต่ละรายการ
ในการใช้งานนี้ SetProxyFunc ยังตั้ง DisableKeepAlives เป็น true ด้วย โดยอัปเดต *http.Transport ที่มีอยู่ แต่แทนที่ transport ชนิดอื่นด้วย HTTP transport ใหม่ ควรเก็บรักษาพฤติกรรม RoundTripper ที่กำหนดเองไว้โดยเจตนาแทนที่จะถือว่ามันจะคงอยู่
Collector.Clone ใช้ HTTP backend ร่วมกัน ดังนั้นการเปลี่ยนพร็อกซีของโคลนอาจเปลี่ยน backend ที่ใช้ร่วมกันนั้นได้ กำหนดความเป็นเจ้าของก่อนทำงานพร้อมกัน การเลือกแบบรอบวงจะหมุน endpoint ที่ให้มา ไม่ใช่ ตัวตนขาออกสาธารณะ ที่ตรวจสอบแล้วหรือความพร้อมใช้งานที่ตรวจสอบอย่างอิสระ