Lấy một trang qua proxy HTTP trong jsoup
Dùng API proxy HTTP ở cấp yêu cầu của jsoup và tạo các yêu cầu riêng khi nhiều worker chia sẻ cài đặt phiên.
jsoup có thể lấy trang qua proxy HTTP và phân tích phản hồi trong cùng một lời gọi:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
Tên máy chủ và cổng số nguyên xác định proxy. Với các yêu cầu được phép tới trang công khai, hãy chọn một điểm cuối HTTP từ dịch vụ của bạn hoặc từ danh sách proxy HTTP. URL truyền cho connect vẫn là trang bạn muốn. Bạn không cần tải HTML vào một chuỗi bằng URLConnection riêng chỉ để thêm tuyến này.
proxy(String, int) chọn một proxy HTTP cho yêu cầu đó. Số cổng như 1080 không chuyển giao thức của nó sang SOCKS; điểm cuối proxy phải nói loại đang được cấu hình. jsoup cũng cung cấp một quá tải chấp nhận java.net.Proxy, nhưng hỗ trợ cho một tuyến cụ thể vẫn phụ thuộc vào cách triển khai HTTP đang dùng.
Cho mỗi worker yêu cầu riêng của nó
Tùy chọn ở cấp yêu cầu giúp công việc song song dễ hơn so với việc đổi thuộc tính hệ thống JVM quanh mỗi lần tải. Giữ yêu cầu có thể thay đổi riêng cho từng worker. jsoup hiện đại có thể chia sẻ cài đặt và kho cookie của phiên trong khi tạo một yêu cầu mới:
Connection session = Jsoup.newSession();
Document first = session.newRequest()
.url("https://www.example.com/one")
.proxy("proxy-a.example", 8080)
.get();
Document second = session.newRequest()
.url("https://www.example.com/two")
.proxy("proxy-b.example", 8080)
.get();
Các lời gọi trên chạy tuần tự để rõ ràng. Nếu công việc được phân phối đồng thời, hãy tạo các yêu cầu một cách độc lập thay vì đổi proxy trên một Connection đang chạy. Phiên chia sẻ cũng chia sẻ cookie; dùng phiên khác nhau khi danh tính duyệt web phải tách biệt.
Các giao diện này có trong jsoup 1.21.2. Giao diện newRequest() không có đối số ra đời từ 1.14.1, nên ứng dụng cũ hơn nên kiểm tra phụ thuộc của mình trước khi áp dụng ví dụ về phiên.
Thông tin xác thực là một yêu cầu bổ sung cho proxy có xác thực. Việc chọn tuyến thành công không cung cấp tài khoản, và nhận được thử thách proxy khác với việc không kết nối được tới cổng của nó.