from urllib.request import ProxyHandler, build_opener

def make_proxy_opener(proxy_uri):
    return build_opener(ProxyHandler({
        "http": proxy_uri,
        "https": proxy_uri,
    }))

opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.

Kallaðu eigin open-aðferð þessa opener þegar leið tilheyrir prófuninni. HTTP-endapunktur dæmisins getur komið frá þjónustunni þinni eða frá HTTP-proxylistanum fyrir opinberar prófanir. Brotið sýnir eignarhald; það skilgreinir ekki fullu auðkenningar- eða heilsustefnuna. Haltu hvaða reikningssérstökum handlers sem er tengdum við fyrirhugaða biðlarann.

urllib.request.install_opener() breytir ferlisvíða sjálfgefnu sem síðari urlopen()-köll á einingastigi nota. Prófari sem fer í gegnum proxies getur því látið ótengdar beiðnir nota síðasta endapunktinn sinn. Tímabundin uppsetning og endurheimt við hreinsun leyfir samt samtímis beiðnum að keyra meðan á sameiginlegu breytingunni stendur.

socket.setdefaulttimeout() breytir á sama hátt sjálfgefnum gildum fyrir sockets sem búin eru til síðar. Notaðu tímanörk á aðgerðarstigi þegar aðeins prófunin á að fá það.

Lokaðu prófunarsvörum og haltu niðurstöðunum nákvæmum: HTTP-villusvar er ekki sjálfkrafa dauður proxy-hlustun. Ef samstillt urllib-prófun er notuð í ósamstilltri þjónustu, færðu blokkerandi vinnu til viðeigandi starfsmanns; sú framkvæmdarákvörðun gerir alhliða opener-breytinguna ekki einangraða.

Prófun ætti að skila athugun sinni án þess að skilja aðra netstefnu eftir. Eigið biðlara-hlutur hennar og takmörkuð aðgerð gera þessi mörk skýr.

Tengdir greinar