Ein tóm HTML-tabell merkir ikki altíð, at svarinum ikki hevur proxy-førslur. Nøkur listar seta JSON-objekt inn í JavaScript-kall og fylla raðirnar seinni.

Fyri eina longu fingna keldu, sum brúkar tann serstaka hjúpin gp.insertPrx og síðani eitt JSON-objekt:

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 er kelduteksturin, ikki eitt kagabók-objekt. Reglulega tjáningin finnur ein kendan hjúp; JSONDecoder ásetur, hvar JSON-virðið endar. Hetta forðar fyri at royna at greina innbygt JSON bara við reglulegri tjáning.

Port-víttið í døminum er greiniliga hexadecimalt: C38 merkir desimalt 3128. Brúka ikki grundtal 16 á desimalt vítti hjá einum øðrum veitara bara tí, at bæði verða nevnd port.

Hetta er ein greinari fyri tað nevnda sniðið, ikki ein JavaScript-tulka. Objekt-literal við einum gøtuteknum, útroknað virði og aðrar JavaScript-tjáningar tørva eina aðra skjalfesta dátuskipan. Koyr ikki vilkórliga síðukota fyri at fáa eina endapunkt-lista.

Váttaðu keldusáttmálan og hald protokoll-víttini sundur. Hevur kelda tíverri fyltar HTML-raðir, brúka endapunkt-úrtak rað fyri rað heldur enn henda JavaScript-hjúpsgreinara. At taka út adressu og port prógvar ikki, at endapunkturin nú bjóðar eina brúkliga proxy-tænastu.

Skyldar greinar