خالي 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 پوښ تحلیل کوونکي پرځای د کرښې له مخې د پای ټکو راویستل وکاروئ. د پتې او پورټ راویستل ثابتوي نه چې پای ټکی اوس د کاروړ پروکسي خدمت وړاندې کوي.

اړوندې مقالې