IPanna seachfhreastalaí agus portanna heicse a bhaint as JSON leabaithe
Díchódaigh ualaí JSON aitheanta ó ghlaonna script ar liostaí seachfhreastalaí agus déan port heicse a léirmhíniú amháin nuair a dhearbhaíonn formáid na foinse é.
Ní chiallaíonn tábla HTML folamh i gcónaí nach bhfuil aon taifead seachfhreastalaí sa fhreagra. Cuireann roinnt liostaí réada JSON isteach i nglaonna JavaScript agus líonann siad na rónta níos déanaí.
Do fhoinse a fuarthas cheana a úsáideann an leasaitheoir sonrach gp.insertPrx agus réad JSON ina dhiaidh:
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))
Is é html téacs na foinse, ní réad brabhsálaí. Aimsíonn an slonn rialta leasaitheoir aitheanta; socraíonn JSONDecoder cá gcríochnaíonn a luach JSON. Seachnaítear mar sin iarracht JSON neadaithe a pharsáil le slonn rialta amháin.
Tá réimse an phoirt sa sampla go heicseadéach go soiléir: ciallaíonn C38 3128 deachúil. Ná cuir bonn 16 i bhfeidhm ar réimse deachúil soláthraí eile díreach toisc gur port a thugtar ar an dá cheann.
Parsálaí don fhormáid a luaitear é seo, ní ateangaire JavaScript. Teastaíonn comhéadan sonraí eile atá doiciméadaithe ó litearálacha réada le comharthaí athfhriotail aonair, ó luachanna ríofa agus ó shloinnte JavaScript eile. Ná rith cód leathanaigh treallach chun liosta críochphointe a fháil.
Bailíochtaigh conradh na foinse agus coinnigh réimsí prótacail ar leithligh. Má tá rónta HTML líonta sa fhoinse ina ionad sin, úsáid eastóscadh críochphointe de réir ró seachas an parsálaí leasaitheora JavaScript seo. Ní chruthaíonn eastóscadh seoladh agus poirt go bhfuil seirbhís seachfhreastalaí inúsáidte á tairiscint ag an gcríochphointe faoi láthair.