Хоосон 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-ыг зөвхөн тогтмол илэрхийллээр задлах оролдлогоос зайлсхийнэ.

Жишээний портын талбар тодорхой hex: C38 нь аравтын 3128 гэсэн үг. Хоёулаа порт гэж нэрлэгддэг учраас өөр үйлчилгээ үзүүлэгчийн аравтын талбарт 16 суурийг хэрэглэж болохгүй.

Энэ нь заасан форматод зориулсан задлагч, JavaScript интерпретатор биш. Нэг хашилттай объектын литерал, тооцоолсон утга болон бусад JavaScript илэрхийлэлд өөр баримтжуулсан өгөгдлийн интерфэйс хэрэгтэй. Төгсгөлийн цэгийн жагсаалт авахын тулд хуудасны дур мэдэн код гүйцэтгэж болохгүй.

Эх сурвалжийн гэрээг баталгаажуулж, протоколын талбаруудыг тусад нь хадгал. Хэрэв эх сурвалжид бөглөсөн HTML мөрүүд байвал энэ JavaScript бүрхүүлийн задлагчийн оронд мөрөөр төгсгөлийн цэг гаргаж авах аргыг ашигла. Хаяг, порт гаргаж авах нь төгсгөлийн цэг одоо ашиглах боломжтой прокси үйлчилгээ санал болгож байна гэдгийг батлахгүй.

Холбоотой нийтлэлүүд