د JSON له دننه د پروکسي IP او هیکس پورټونو راویستل
د پروکسي لیستونو د سکریپټ غوښتنو څخه پیژندل شوي JSON پیلوډونه ډیکوډ کړئ او هیکس پورټ یوازې هغه وخت تفسیر کړئ چې د سرچینې بڼه یې اعلان کړي.
خالي HTML جدول تل د دې معنا نه ده چې ځواب کې د پروکسي ریکارډونه نشته. ځینې لیستونه JSON توکي د JavaScript غوښتنو دننه ږدي او کرښې وروسته ډکوي.
د لا دمخه ترلاسه شوې سرچینې لپاره چې ځانګړی پوښ gp.insertPrx او بیا JSON توکی کاروي:
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 د سرچینې متن دی، نه د براوزر توکی. منظم څرګندونې پیژندل شوی پوښ مومي؛ JSONDecoder ټاکي چې د JSON ارزښت چېرته پای ته رسي. په دې توګه د یوازې منظمې څرګندونې سره د ننوتل شوي JSON د تحلیل کولو له هڅې ډډه کیږي.
په بیلګه کې د پورټ ساحه په روښانه توګه هیکساډیسیمل ده: C38 یعنې لسم 3128. یوازې ځکه چې دواړه پورټ بلل کیږي، د بل چمتو کوونکي په لسمه ساحه کې اساس 16 مه تطبیقوئ.
دا د یادې شوې بڼې لپاره تحلیل کوونکی دی، نه د JavaScript ژباړونکی. د یوې نښې شیان، حساب شوي ارزښتونه او نور JavaScript څرګندونې بل مستند ډیټا انټرفیس ته اړتیا لري. د پای ټکو لیست ترلاسه کولو لپاره د پاڼې خپل سري کوډ مه چلوئ.
د سرچینې تړون تایید کړئ او د پروتوکول ساحې جلا وساتئ. که سرچینه پرځای ډکې HTML کرښې ولري، د دې JavaScript پوښ تحلیل کوونکي پرځای د کرښې له مخې د پای ټکو راویستل وکاروئ. د پتې او پورټ راویستل ثابتوي نه چې پای ټکی اوس د کاروړ پروکسي خدمت وړاندې کوي.