காலியான HTML அட்டவணை என்பது பதிலில் ப்ராக்ஸி பதிவுகள் இல்லை என்று எப்போதும் பொருள் அல்ல. சில பட்டியல்கள் JavaScript அழைப்புகளுக்குள் JSON பொருட்களை வைத்து வரிசைகளைப் பின்னர் நிரப்புகின்றன.

ஏற்கனவே பெறப்பட்ட மூலம் குறிப்பிட்ட ரேப்பர் 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 ரேப்பர் பாகுபடுத்திக்குப் பதிலாக வரிசை அடிப்படையிலான எண்ட்பாயிண்ட் பிரித்தெடுத்தல் பயன்படுத்தவும். முகவரியையும் போர்ட்டையும் பிரித்தெடுப்பது எண்ட்பாயிண்ட் இப்போது பயன்படுத்தக்கூடிய ப்ராக்ஸி சேவையை வழங்குகிறது என்பதை நிரூபிக்காது.

தொடர்புடைய கட்டுரைகள்