እያንዳንዱን የፕሮክሲ ረድፍ እንደ አንድ ክፍል ያተንትኑ። በገጹ ላይ ያሉትን ሁሉንም ተመሳሳይ td ጠፍጥፍ አድርጎ ውጤቶቹን በተወሰነ ቁጥር መከፋፈል አንድ ሕዋስ ሲጠፋ ወይም ሌላ ሠንጠረዥ ሲታይ ከአንድ ረድፍ የመጣውን አድራሻ ከቀጣዩ ረድፍ ፖርት ጋር ሊያጣምር ይችላል።

አፕሊኬሽኑ አስቀድሞ ላገኘው HTML፣ የመጀመሪያዎቹ ሁለት አምዶቹ IP አድራሻና ፖርት የሆኑት ሠንጠረዥ እንደሚከተለው ሊተነተን ይችላል፦

import ipaddress
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "html.parser")
table = soup.select_one(table_selector)
if table is None:
    raise ValueError("Expected proxy table was not found")

endpoints = set()
for row in table.select("tbody tr"):
    cells = row.find_all("td", recursive=False)
    if len(cells) < 2:
        continue
    try:
        address = ipaddress.ip_address(cells[0].get_text(strip=True))
        port = int(cells[1].get_text(strip=True))
    except ValueError:
        continue
    if 1 <= port <= 65535:
        endpoints.add((str(address), port))

html እና table_selector የአፕሊኬሽኑ ግብዓቶች ናቸው። መራጩንና የአምድ ካርታውን ከምንጩ ትክክለኛ ምልክት መሠረት ይምረጡ። ነጻ የፕሮክሲ ዝርዝሩ ከመጨረሻ ነጥብ መዝገቦች ምንጮች አንዱ ነው፣ ነገር ግን ያንን ካርታ ከመምረጥዎ በፊት ረድፎቹ መመርመር አለባቸው። የቀድሞ የሠንጠረዥ IDም ሆነ አንድ ገጽ በትክክል 300 መዝገቦችን ይዟል የሚለው ማረጋገጫ ዘላቂ ንድፍ አይደለም።

ስብስቡ የተደጋገሙ የአድራሻና የፖርት ጥንዶችን ያስወግዳል፣ ነገር ግን የእያንዳንዱን ጥንድ ትስስር ይጠብቃል። ያልተጠበቀ ዜሮ ውጤት ያለው ጭነት አሁንም መመርመር አለበት፦ ሠንጠረዡ ተቀይሮ ሊሆን ይችላል ወይም የተገኘው ሰነድ ከዝርዝሩ ይልቅ የተፈተና ገጽ ሊሆን ይችላል።

የሚታወቅ ፕሮቶኮልና የፍተሻ ጊዜ መስኮች ካሉ ከመጨረሻ ነጥቡ ጋር ያቆዩዋቸው። የሚመስል IP እና ፖርት ማውጣት ቅርጸቱን ብቻ ያረጋግጣል፣ መጨረሻ ነጥቡ አሁን የሚሠራ HTTP ወይም SOCKS አገልግሎት እንደሚሰጥ አይደለም።

የራስጌ ወይም የማጣሪያ ረድፎች መጨረሻ ነጥቦች አይደሉም። th ሕዋሶችን ብቻ የያዘ ረድፍ ይዘለላል፣ ባዶ ወይም አድራሻ ያልሆኑ መስኮች ግን ማረጋገጫውን አያልፉም። የመጀመሪያውንና የመጨረሻውን ረድፍ በአቀማመጥ አትጣሉ፦ የገጹ አቀማመጥ ከተቀየረ በኋላ ሁለቱም እውነተኛ መጨረሻ ነጥብ ሊሆኑ ይችላሉ።

ተዛማጅ ጽሑፎች