Tak proxy-IP og hex-portar út úr innbygdum JSON
Avkodaðu kendar JSON-nytslur úr skriptkalli á proxy-listum og tulka eina hex-port bert, tá ið upprunasniðið sigur tað.
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.