Một opener urllib có thể định tuyến yêu cầu qua proxy và duy trì cookie của trang web cùng lúc. Hãy trao cho nó cả hai trình xử lý:

from http.cookiejar import CookieJar
from urllib.request import (
    HTTPCookieProcessor, ProxyHandler, build_opener,
)

cookies = CookieJar()
opener = build_opener(
    ProxyHandler({"http": "http://proxy.example:8080"}),
    HTTPCookieProcessor(cookies),
)
with opener.open("http://www.example.com/", timeout=10) as response:
    body = response.read()

Ví dụ dùng một đích HTTP thông thường và tuyến proxy rõ ràng của nó. Để kiểm tra một trang công khai được phép mà không cần xác thực proxy, hãy chọn một ứng viên từ danh sách proxy HTTP cho tuyến đó trong khi giữ lọ cookie dự định. Dùng lại opener cho các yêu cầu sau thuộc cùng phiên trang web. Bộ xử lý cookie trích xuất cookie phản hồi được chấp nhận và thêm những cookie phù hợp vào các yêu cầu tiếp theo.

Tạo một CookieJar trống mới trước mỗi lần gọi sẽ bỏ đi tính liên tục đó. Giữ lọ đi cùng phiên mà nó đại diện; dùng lọ riêng cho các tài khoản hoặc quy trình mà cookie cần tách biệt.

CookieJar cơ bản giữ trạng thái trong bộ nhớ. Để duy trì giữa các lần chạy chương trình, hãy chọn một lớp con FileCookieJar phù hợp và chủ động lưu hoặc tải nó.

Không cần cài đặt opener toàn cục cho cách bố trí này. Gọi phương thức open của đối tượng này giữ proxy và cookie gắn với cùng một thao tác.

Bài viết liên quan