პროქსის IP-ის გამოყენება Python Requests-ში
Requests-ში თითო მოთხოვნის პროქსი-მარშრუტები აშკარად მიუთითეთ, აირჩიეთ საბოლოო წერტილის სწორი სქემა და დაამუშავეთ დროის ამოწურვა და HTTPS გვირაბის ხარვეზები.
როდესაც პროექტში Requests ხელმისაწვდომია, გამოძახებას პროქსების ასახვა გადაეცით:
import requests
proxies = {
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}
response = requests.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
print(response.status_code)
Loopback საბოლოო წერტილი შეცვალეთ თქვენი მოქმედი პროქსით ან HTTP პროქსიების სიიდან კანდიდატით, რომელსაც ამ მოთხოვნით შეამოწმებთ. გასაღებები დანიშნულების სქემებს აღწერს: http HTTP URL-ებისთვის და https HTTPS URL-ებისთვის. მნიშვნელობები პროქსის მსმენელს აღწერს. თუ ქსელს ცალკე მარშრუტები სჭირდება, ეს სხვადასხვა საბოლოო წერტილიც შეიძლება იყოს.
http:// პროქსის მნიშვნელობა https გასაღების ქვეშ განზრახ არის. Requests HTTP მსმენელს CONNECT გვირაბს სთხოვს, შემდეგ მისი გავლით სამიზნესთან TLS-ს ამყარებს, პროქსის სამიზნეებისა და პორტების პოლიტიკის ფარგლებში. მნიშვნელობის https://-ზე შეცვლა თვითონ პროქსისთან TLS-ს ითხოვს; შეიძლება ჩავარდეს, თუ მსმენელი დაუშიფრავ HTTP-ს ელის.
რას ნიშნავს დროის ლიმიტის ორი რიცხვი
timeout=(5, 15) კავშირისა და წაკითხვის დროის ლიმიტებს ადგენს. ის მთლიანად თხუთმეტწამიან ბოლო ვადას არ აწესებს. პერიოდულმა შემოსულმა მონაცემებმა, მრავალმა მისამართმა და კავშირის მცდელობებმა გასული დრო შეიძლება გაზარდოს. ამ პარამეტრის გამოტოვებისას Requests საერთო ლიმიტს არ იძლევა. აირჩიეთ პასუხისთვის შესაფერისი საზღვრები და დაამატეთ აპლიკაციის დონის ბოლო ვადა, თუ სამუშაოს მკაცრი საერთო დრო სჭირდება.
ხარვეზი იმ ეტაპზე დაამუშავეთ, სადაც ხდება
try:
response = requests.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
except requests.exceptions.ProxyError as error:
print("Proxy setup failed:", type(error).__name__)
except requests.exceptions.Timeout:
print("A configured timeout expired")
except requests.exceptions.HTTPError as error:
print("HTTP status:", error.response.status_code)
უარყოფილმა CONNECT-მა შეიძლება ProxyError გამოიწვიოს სამიზნის პასუხის არსებობამდე. HTTPError განშტოება შეცდომის სტატუსით მიღებულ პასუხს მოსდევს; Timeout დაყენებული ლიმიტის ამოწურვას ნიშნავს. კავშირის დამყარების გამონაკლისების ჯაჭვები ლოკალურად შეისწავლეთ და გაზიარებამდე წაშალეთ ავტორიზაციის მონაცემებიანი საბოლოო წერტილები და პირადი URL-ები.
სერტიფიკატის შემოწმება ჩართული დატოვეთ. თუ ნებადართული ქსელი კერძო CA-ს ან მართულ გადაჭერას იყენებს, შემოწმების გამორთვის ნაცვლად მიაწოდეთ მოსალოდნელი ნდობის მასალა.
თითო მოთხოვნის აშკარა ჩანაწერები აქ მითითებულ მარშრუტებს აკონტროლებს, თუმცა გამოტოვებულ სქემებზე გარემოდან პროქსის აღმოჩენამ კვლავ შეიძლება იმოქმედოს. გამოძახების მრავალჯერ გამოყენებად Session-ში გადატანისას გადაწყვიტეთ, როგორ უნდა ურთიერთქმედებდეს გარემოს ცვლადები, Session-ის ნაგულისხმევი მნიშვნელობები და მოთხოვნის გადაფარვები; კავშირის ხელახლა გამოყენება და მარშრუტიზაციის პოლიტიკა სხვადასხვა არჩევანია.