ପ୍ରତ୍ୟେକ ପ୍ରକ୍ସି ଧାଡ଼ିକୁ ଏକ ଏକକ ଭାବରେ ବିଶ୍ଳେଷଣ କରନ୍ତୁ। ଯଦି ପୃଷ୍ଠାର ସମସ୍ତ ମେଳ ଖାଉଥିବା 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 ସେଲ ଥିବା ଧାଡ଼ି ଛାଡ଼ିଦିଆଯାଏ, ଖାଲି କିମ୍ବା ଠିକଣା ନଥିବା ଫିଲ୍ଡ ଯାଞ୍ଚରେ ବିଫଳ ହୁଏ। ପୃଷ୍ଠା ଲେଆଉଟ ବଦଳିବା ପରେ ପ୍ରଥମ ଏବଂ ଶେଷ ଧାଡ଼ିକୁ ସ୍ଥାନ ଅନୁସାରେ ବାଦ ଦିଅନ୍ତୁ ନାହିଁ: ଦୁଇଟି ମଧ୍ୟରୁ ଯେକୌଣସି ପ୍ରକୃତ ଏଣ୍ଡପଏଣ୍ଟ ହୋଇପାରେ।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ