ບາງແອັບຕ້ອງການ IP:port. ແອັບອື່ນຕ້ອງການ URL ທີ່ເລີ່ມດ້ວຍ http:// ຫຼື socks5://. ການຕັ້ງຄ່າ browser ມັກແຍກທີ່ຢູ່ແລະ port ເປັນຄົນລະຊ່ອງ. ດັ່ງນັ້ນ endpoint ດຽວກັນອາດມີຫຼາຍຮູບແບບ ໂດຍທີ່ຢູ່ບໍ່ປ່ຽນ.

ລາຍການ IPv4

ສົມມຸດວ່າລາຍຊື່ HTTP proxy ໃຫ້ຕົວຢ່າງ HTTP proxy 203.0.113.10:8080.

ສິ່ງທີ່ແອັບຂໍປ້ອນ
Host ຫຼື IP203.0.113.10
Port8080
HTTP proxy URLhttp://203.0.113.10:8080

ຢ່າໃສ່ port ສອງຄັ້ງ. ຖ້າແອັບມີຊ່ອງ port ແລ້ວ ການໃສ່ 203.0.113.10:8080 ໃນຊ່ອງ host ອາດເຮັດໃຫ້ມັນພະຍາຍາມ resolve ທັງ string ເປັນຊື່ host. ເຊັ່ນດຽວກັນ ຢ່າເພີ່ມ scheme ໃນຊ່ອງທີ່ລະບຸຊັດວ່າຮັບພຽງທີ່ຢູ່ IP.

Scheme ຕ້ອງກົງກັບບໍລິການ. ເລືອກ HTTP ຫຼື SOCKS5 ຕາມການຮອງຮັບຂອງ client ກ່ອນປ່ຽນທີ່ຢູ່. ການຂຽນ socks5:// ນຳໜ້າ HTTP endpoint ປ່ຽນສິ່ງທີ່ client ສົ່ງ ແຕ່ບໍ່ໄດ້ເປີດ SOCKS5 ໃນ server ນັ້ນ.

IPv6 ຕ້ອງມີວົງເລັບສີ່ຫຼ່ຽມໃນ URL

ທີ່ຢູ່ IPv6 ມີເຄື່ອງໝາຍສອງຈ້ຳຢູ່ແລ້ວ, ດັ່ງນັ້ນ URL ຈຶ່ງຄອບທີ່ຢູ່ດ້ວຍວົງເລັບສີ່ຫຼ່ຽມກ່ອນເພີ່ມ port:

http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080

ຖ້າບໍ່ມີວົງເລັບ ຂອບເຂດທີ່ຢູ່ກັບ port ຈະບໍ່ຊັດ. ແອັບທີ່ມີຊ່ອງແຍກມັກຕ້ອງການ 2001:db8::10 ເປັນ host ແລະ 8080 ເປັນ port; ໃຫ້ຕາມຮູບແບບປ້ອນຂອງແອັບນັ້ນ. ທັງສອງທີ່ຢູ່ໃນນີ້ເປັນຕົວຢ່າງເອກະສານ, ບໍ່ແມ່ນ proxy ທີ່ເຮັດວຽກຢູ່.

ວິເຄາະ URL ແທນການແຍກທຸກເຄື່ອງໝາຍສອງຈ້ຳ

ສະຄຣິບ Python ສັ້ນໆ ໃຊ້ URL parser ມາດຕະຖານຈັດການ IPv4 ແລະ IPv6 URL ທີ່ມີວົງເລັບໄດ້:

from urllib.parse import urlsplit

proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)

ຄຸນສົມບັດ hostname ສົ່ງຄືນທີ່ຢູ່ໂດຍບໍ່ມີວົງເລັບ. ການແຍກ string ຕົ້ນສະບັບທຸກສອງຈ້ຳຈະເຮັດໃຫ້ຕົວຢ່າງນີ້ເສຍ. ໃນ importer ຈິງ ຄວນປະຕິເສດ host ທີ່ຂາດ, scheme ທີ່ບໍ່ຮອງຮັບ ແລະ port ນອກ 1–65535 ນຳ. ການວິເຄາະ URL ໃຫ້ສ່ວນປະກອບຂອງມັນ, ບໍ່ໄດ້ພິສູດວ່າບໍລິການມີຢູ່.

ເມື່ອລາຍຊື່ມີຊື່ຜູ້ໃຊ້ແລະລະຫັດຜ່ານ

ໂຄງສ້າງ URL ທີ່ພົບເລື້ອຍແມ່ນ http://username:password@host:port. ຕົວອັກສອນເຊັ່ນ @, # ແລະ / ໃນຂໍ້ມູນເຂົ້າໃຊ້ຕ້ອງມີ URL encoding ທີ່ຖືກ. ຖ້າ client ມີຊ່ອງຂໍ້ມູນເຂົ້າໃຊ້ແຍກ ການໃຊ້ຊ່ອງນັ້ນມັກງ່າຍກວ່າສ້າງ URL ດ້ວຍມື.

ກວດຮູບແບບຕົ້ນສະບັບຂອງຜູ້ໃຫ້ບໍລິການ ກ່ອນປ່ຽນ string ຂໍ້ມູນເຂົ້າໃຊ້ທີ່ແຍກດ້ວຍສອງຈ້ຳ. ສີ່ຊ່ອງທີ່ແຍກແບບນີ້ບໍ່ມີຄວາມໝາຍສາກົນ ແລະລະຫັດຜ່ານເອງອາດມີສອງຈ້ຳ. Parser ສຳລັບແຖວ IP:port ງ່າຍໆ ບໍ່ຄວນເດົາຮູບແບບອື່ນຢ່າງງຽບໆ.

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