ہر پراکسی قطار کو ایک اکائی کے طور پر تجزیہ کریں۔ اگر صفحے کے تمام مماثل 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 سیل والی قطار چھوڑ دی جاتی ہے، جبکہ خالی یا پتہ نہ ہونے والے فیلڈز توثیق میں ناکام ہوتے ہیں۔ پہلی اور آخری قطار کو مقام کی بنیاد پر نہ ہٹائیں: صفحے کا لے آؤٹ بدلنے کے بعد دونوں میں سے کوئی بھی اصل اینڈ پوائنٹ ہو سکتا ہے۔

متعلقہ مضامین