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 ຂອງມັນໃນຟັງຊັນຂອງແອັບພລິເຄຊັນ ໂດຍຮັກສາການຈັດການຂໍ້ຜິດພາດແບບປົກກະຕິ. ຕັ້ງຄ່າຕົວເລືອກກ່ອນທີ່ຄຳຮ້ອງ ຫຼື ການເຂົ້າເບິ່ງແບບ async ຈະເລີ່ມ. ລາຍຊື່ພຣັອກຊີ HTTP ໃຫ້ຜູ້ສະໝັກສາທາລະນະສຳລັບອິນພຸດ endpoint ຂອງຕົວສະຫຼັບ.

SetProxy ເລືອກ endpoint ຄົງທີ່; SetProxyFunc ໃຫ້ HTTP transport ເລືອກຕໍ່ຄຳຮ້ອງ. ສິ່ງນີ້ຫຼີກລ່ຽງການປ່ຽນການຕັ້ງຄ່າທີ່ໃຊ້ຮ່ວມກັນພາຍໃນແຕ່ລະ callback OnRequest.

ໃນການຈັດຕັ້ງນີ້ SetProxyFunc ຍັງຕັ້ງ DisableKeepAlives ເປັນ true. ມັນອັບເດດ *http.Transport ທີ່ມີຢູ່ ແຕ່ປ່ຽນປະເພດ transport ອື່ນດ້ວຍ HTTP transport ໃໝ່. ຮັກສາພຶດຕິກຳ RoundTripper ແບບກຳນົດເອງໃດໆຢ່າງຕັ້ງໃຈ ແທນທີ່ຈະສົມມຸດວ່າມັນຈະຢູ່ລອດ.

Collector.Clone ໃຊ້ HTTP backend ຮ່ວມກັນ ດັ່ງນັ້ນການປ່ຽນພຣັອກຊີຂອງໂຄນສາມາດປ່ຽນ backend ຮ່ວມນັ້ນ. ກຳນົດຄວາມເປັນເຈົ້າຂອງກ່ອນການເຮັດວຽກພ້ອມກັນ. ການເລືອກແບບວົນຮອບຈະວຽນ endpoint ທີ່ໃຫ້ມາ ບໍ່ແມ່ນ ຕົວຕົນທາງອອກສາທາລະນະ ທີ່ກວດສອບແລ້ວ ຫຼື ຄວາມພ້ອມໃຊ້ງານທີ່ກວດສອບຢ່າງເປັນເອກະລາດ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ