სპეციალური სიმბოლოები პროქსის პაროლებში
პროქსის მომხმარებლის სახელი და პაროლი ცალ-ცალკე დააკოდირეთ, რათა @, ორწერტილმა, დახრილმა ხაზმა და #-მა URL არ დააზიანოს.
@ ან # შემცველ პაროლს ხელით აწყობილი პროქსის URL-ის დაზიანება შეუძლია, მაშინაც, როცა შესვლის მონაცემები სწორია. ამ სიმბოლოებს URL-ში უკვე აქვთ მნიშვნელობა, ამიტომ კლიენტმა პაროლის ნაწილი შეიძლება ჰოსტის სახელად ან ფრაგმენტად გაარჩიოს.
შესვლის მონაცემების ორი ველი ცალ-ცალკე დააკოდირეთ
ეს მაგალითი URL-ის სტრუქტურულ გამყოფებს ინარჩუნებს და მხოლოდ მომხმარებლის სახელსა და პაროლს აკოდირებს:
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"
)
გამოიყენეთ რეალური ბოლო წერტილი და შესვლის მონაცემები. ნაჩვენები მისამართი სადოკუმენტაციო მაგალითია. ცარიელი safe არგუმენტი მნიშვნელოვანია: quote ჩვეულებრივ დახრილ ხაზს უცვლელად ტოვებს, მაგრამ ამ შესვლის ველში ის უნდა დაკოდირდეს.
მთელ პროქსის URL-ს ნუ დააკოდირებთ. სქემის გამყოფებისა და შესვლის მონაცემებსა და ჰოსტს შორის @-ის დაკოდირება ანგრევს სტრუქტურას, რომლის შენარჩუნებაც გსურდათ. უკვე დაკოდირებული პაროლის მეორედ დაკოდირებასაც მოერიდეთ.
შედეგი Requests-თან გამოიყენეთ
import requests
response = requests.get(
"https://example.com/",
proxies={"http": proxy_url, "https": proxy_url},
timeout=(5, 15),
)
response.raise_for_status()
თუ მოთხოვნა კვლავ მარცხდება, შეამოწმეთ, პროქსი შესვლას უარყოფს თუ კლიენტი უფრო ადრე, გარჩევის ან დაკავშირებისას ჩავარდა. 407 ავთენტიკაციის მოთხოვნა და არასწორი URL სხვადასხვა შეცდომაა.
HTTPX-ს ავთენტიკაციის ცალკე შენახვა შეუძლია
HTTPX-ის Proxy ობიექტს ბოლო წერტილისა და შესვლის მონაცემების ცალკე არგუმენტებად მიღება შეუძლია:
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()
ამით userinfo ნაწილის ხელით აწყობას თავიდან იცილებთ. ეს მონაცემებს პროქსის კავშირისგან დამოუკიდებლად არ შიფრავს და არ ირჩევს ავთენტიკაციის მეთოდს, რომელსაც ყველა სერვისი უჭერს მხარს.
თუ უფასო სია მხოლოდ IP-სა და პორტს იძლევა, ამ მაგალითში ნაგულისხმევი შესვლის მონაცემები არ არის. ავთენტიკაცია მხოლოდ მაშინ გამოიყენეთ, როცა ოპერატორი ნამდვილად გაძლევთ ანგარიშს. შესვლის მონაცემებიანი URL-ები საერთო ჟურნალებში ან საწყის ფაილებში არ ჩაწეროთ.