Gall cyfrinair sy’n cynnwys @ neu # dorri URL dirprwy a luniwyd â llaw hyd yn oed pan fo’r manylion mewngofnodi’n gywir. Mae gan y nodau hyn ystyr mewn URL eisoes, felly gall y cleient ddehongli rhan o’r cyfrinair fel enw gwesteiwr neu ddarn fragment.

Amgodiwch y ddau faes mewngofnodi ar wahân

Mae’r enghraifft hon yn cadw gwahanyddion strwythurol yr URL ac yn amgodio’r enw defnyddiwr a’r cyfrinair yn unig:

from urllib.parse import quote

username = "user@team"
password = "p:a/ss#?"
proxy_url = (
    "http://"
    + quote(username, safe="")
    + ":"
    + quote(password, safe="")
    + "@203.0.113.10:8080"
)

Defnyddiwch eich pwynt terfyn a’ch manylion mewngofnodi go iawn. Enghraifft ddogfennaeth yw’r cyfeiriad a ddangosir. Mae’r arg safe wag yn bwysig: mae quote fel arfer yn gadael slaes heb ddianc, ond rhaid amgodio slaes yn y maes mewngofnodi hwn.

Peidiwch ag amgodio’r URL dirprwy cyfan. Mae amgodio gwahanyddion y cynllun a’r @ rhwng y manylion mewngofnodi a’r gwesteiwr yn dinistrio’r strwythur roeddech am ei gadw. Ceisiwch hefyd osgoi amgodio cyfrinair sydd eisoes wedi’i amgodio am yr ail dro.

Defnyddiwch y canlyniad gyda Requests

import requests

response = requests.get(
    "https://example.com/",
    proxies={"http": proxy_url, "https": proxy_url},
    timeout=(5, 15),
)
response.raise_for_status()

Os yw’r cais yn dal i fethu, gwiriwch a yw’r dirprwy’n gwrthod y mewngofnodi neu a fethodd y cleient yn gynharach wrth ddadansoddi neu gysylltu. Mae her dilysu hunaniaeth 407 ac URL annilys yn fethiannau gwahanol.

Gall HTTPX gadw dilysu hunaniaeth ar wahân

Gall gwrthrych Proxy yn HTTPX dderbyn y pwynt terfyn a’r manylion mewngofnodi fel argiau ar wahân:

import httpx

proxy = httpx.Proxy(
    "http://203.0.113.10:8080",
    auth=("user@team", "p:a/ss#?"),
)

with httpx.Client(proxy=proxy, trust_env=False, timeout=15) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()

Mae hyn yn osgoi adeiladu’r rhan userinfo eich hun. Nid yw’n amgryptio’r manylion yn annibynnol ar gysylltiad y dirprwy nac yn dewis dull dilysu y mae pob gwasanaeth yn ei gefnogi.

Os yw rhestr am ddim yn rhoi IP a phorth yn unig, nid yw’r enghraifft hon yn rhoi manylion mewngofnodi rhagosodedig. Defnyddiwch ddilysu dim ond pan fo’r gweithredwr yn darparu cyfrif mewn gwirionedd. Peidiwch â rhoi URLau sy’n cynnwys manylion mewngofnodi mewn logiau a rennir na ffeiliau ffynhonnell.

Erthyglau cysylltiedig