ئىچىگە ئورۇنلاشتۇرۇلغان JSON دىن proxy IP ۋە hex پورت چىقىرىش
Proxy تىزىملىكلىرىنىڭ script چاقىرىقلىرىدىكى مەلۇم JSON يۈكلىرىنى ئېچىڭ ۋە hex پورتنى پەقەت مەنبە فورماتى شۇنى ئېلان قىلغاندا چۈشەندۈرۈڭ.
قۇرۇق HTML جەدۋەل ھەمىشە جاۋابتىن proxy خاتىرىسى يوق دېگەنلىك ئەمەس. بەزى تىزىملىكلەر 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 قاپ تەھلىللىگۈچىنىڭ ئورنىغا قۇر بويىچە ئاخىرقى نۇقتا چىقىرىش نى ئىشلىتىڭ. ئادرېس ۋە پورت چىقىرىش ئاخىرقى نۇقتىنىڭ ھازىر ئىشلىتىشكە بولىدىغان proxy مۇلازىمىتى تەمىنلەيدىغانلىقىنى ئىسپاتلىمايدۇ.