HTML taula hutsak ez du beti esan nahi erantzunak proxy-erregistrorik ez duenik. Zerrenda batzuek JSON objektuak JavaScript deien barruan jartzen dituzte eta gero betetzen dituzte errenkadak.

Dagoeneko lortutako iturburu batek gp.insertPrx bilgarri zehatza eta ondoren JSON objektua erabiltzen baditu:

import ipaddress
import json
import re

decoder = json.JSONDecoder()
endpoints = set()
for marker in re.finditer(r"gp[.]insertPrx\(\s*", html):
    try:
        row, end = decoder.raw_decode(html, marker.end())
        if not isinstance(row, dict):
            continue
        address = ipaddress.ip_address(row["PROXY_IP"])
        port = int(row["PROXY_PORT"], 16)
    except (ValueError, KeyError, TypeError):
        continue
    if 1 <= port <= 65535 and html[end:].lstrip().startswith(");"):
        endpoints.add((str(address), port))

html iturburuaren testua da, ez nabigatzailearen objektua. Adierazpen erregularrak bilgarri ezaguna aurkitzen du; JSONDecoder-ek JSON balioa non amaitzen den zehazten du. Horrela saihesten da JSON habiaratua adierazpen erregularraz soilik analizatzeko saiakera.

Adibideko portu-eremua esplizituki hamaseitarra da: C38k 3128 hamartarra esan nahi du. Ez aplikatu 16 oinarria beste hornitzaile baten eremu hamartarrari, biak portu deitzen direlako soilik.

Hau adierazitako formaturako analizatzailea da, ez JavaScript interpretatzailea. Komatxo bakuneko objektu-literalek, kalkulatutako balioek eta beste JavaScript adierazpenek dokumentatutako beste datu-interfaze bat behar dute. Ez exekutatu orrialde-kode arbitrarioa amaiera-puntuen zerrenda lortzeko.

Egiaztatu iturburuaren kontratua eta gorde protokolo-eremuak bereizita. Iturburuak HTML errenkadak beteta baditu, erabili errenkadaka amaiera-puntuak ateratzea JavaScript bilgarri analizatzaile honen ordez. Helbide bat eta portu bat ateratzeak ez du frogatzen amaiera-puntuak gaur egun proxy-zerbitzu erabilgarria eskaintzen duenik.

Erlazionatutako artikuluak