Proxy-eindpunte een tabelry op 'n slag onttrek
Hou IP-adresse aan hul poorte gekoppel en valideer die velde wanneer 'n gestoorde HTML-tabel met proxylistaaie ontleed word.
Ontleed elke proxyry as 'n eenheid. As jy elke passende td oor 'n bladsy plat maak en die resultate in 'n vaste aantal groepeer, kan 'n adres uit een ry met 'n poort uit die volgende ry gepaar word wanneer 'n sel ontbreek of nog 'n tabel verskyn.
Vir HTML wat die toepassing reeds bekom het, kan 'n tabel waarvan die eerste twee kolomme IP-adres en poort is, so ontleed word:
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 en table_selector is insette van die toepassing. Kies die selektor en kolomtoewysing op grond van die bron se werklike opmaak. Die gratis proxylis is een bron van eindpuntrekords, maar sy rye moet ondersoek word voordat daardie toewysing gekies word. Nóg 'n historiese tabel-ID nóg die bewering dat 'n bladsy presies 300 rekords bevat, is 'n blywende skema.
Die versameling verwyder duplikaat adres-en-poort-pare terwyl elke paar se assosiasie behoue bly. 'n Onverwagte invoer met nul resultate moet steeds ondersoek word: die tabel het dalk verander, of die opgehaalde dokument is dalk 'n uitdagingsbladsy eerder as die lys.
Hou enige geadverteerde protokol- en kontroletyd-velde saam met die eindpunt wanneer dit saak maak. Om 'n geloofwaardige IP en poort te onttrek, vestig net die formaat, nie dat die eindpunt tans 'n werkende HTTP- of SOCKS-diens lewer nie.
Kop- of filterrye is nie eindpunte nie. 'n Ry wat net th-selle bevat, word oorgeslaan, terwyl leë of nie-adres-velde die validering faal. Moenie die eerste en laaste ry op grond van posisie weggooi nie: enigeen kan 'n werklike eindpunt wees nadat die bladsy-uitleg verander.