Ang walang laman na talahanayang HTML ay hindi laging nangangahulugang walang proxy record ang tugon. May mga listahan na naglalagay ng JSON object sa loob ng JavaScript call at pinupunan ang mga hilera mamaya.

Para sa pinagmulang nakuha na na gumagamit ng partikular na wrapper na gp.insertPrx na sinusundan ng JSON object:

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))

Ang html ay teksto ng pinagmulan, hindi object ng browser. Hinahanap ng regular na expression ang kilalang wrapper; tinutukoy ng JSONDecoder kung saan nagtatapos ang halaga ng JSON. Nakakaiwas ito sa pagsubok na i-parse ang naka-nest na JSON gamit lamang ang regular na expression.

Ang field ng port sa halimbawa ay tahasang hexadecimal: ang C38 ay nangangahulugang 3128 decimal. Huwag ilapat ang base 16 sa decimal na field ng ibang provider dahil lang tinatawag na port ang pareho.

Ito ay parser para sa nakasaad na format, hindi interpreter ng JavaScript. Ang mga object literal na may solong quote, kinakalkulang halaga at iba pang expression ng JavaScript ay nangangailangan ng ibang dokumentadong interface ng data. Huwag magpatakbo ng arbitraryong code ng pahina para makakuha ng listahan ng endpoint.

I-validate ang kontrata ng pinagmulan at panatilihing hiwalay ang mga field ng protocol. Kung ang pinagmulan ay may punong HTML na hilera sa halip, gamitin ang pagkuha ng endpoint ayon sa hilera kaysa sa parser ng JavaScript wrapper na ito. Ang pagkuha ng address at port ay hindi nagpapatunay na ang endpoint ay nag-aalok ngayon ng magagamit na serbisyo ng proxy.

Kaugnay na mga artikulo