Có gì mới
Chỉ cần thiếu một chữ cái. Gõ -contry-de vào proxy username và lỗi chính tả đó nằm lộ rõ ngay trước mắt, trông hoàn toàn giống một tùy chọn hợp lệ.
Proxy port của FourA phản hồi trường hợp đó bằng mã 400 kèm danh sách mọi key mà nó nhận diện. Đó là một chi tiết nhỏ của sản phẩm rời giai đoạn beta vào ngày 15 tháng 9: một proxy URL tại các exit node của chúng tôi dành cho mọi client hỗ trợ proxy (trình duyệt, công cụ tải xuống, trình scraper bạn đang chạy sẵn) mà không cần viết lệnh gọi API. Bạn tạo một proxy user trong Dashboard, dán chuỗi này vào, tunnel cùng lưu lượng sẽ được tính vào gói dịch vụ tương tự như các API request.
Dưới đây là toàn bộ cú pháp và lý do cho từng quy tắc được thiết lập.
Cách thức hoạt động
Port này hoạt động tại proxy.foura.ai:34004 và sử dụng HTTP CONNECT với xác thực Basic, gửi tới các đích đến trên port 443 và 80. Thông tin xác thực là các proxy user, được tách biệt có chủ đích khỏi API key của bạn: quá trình bắt tay proxy truyền dữ liệu dạng văn bản thuần, và một proxy user có thể được cấp mật khẩu mới mà không ảnh hưởng đến tích hợp API của bạn.
Mọi thông số phía sau thông tin xác thực là một danh sách các cặp -key-value, theo thứ tự bất kỳ:
# Shared network, a German address, one sticky session for this job
curl -x "http://USERNAME-country-de-session-job42:PASSWORD@proxy.foura.ai:34004" \
https://example.com
# Premium network, an Android address in Germany, held 30 minutes
curl -x "http://USERNAME-network-premium-country-de-os-android-session-s1-lifetime-30:PASSWORD@proxy.foura.ai:34004" \
https://example.com
Shared là các cổng thoát (exit) riêng của FourA: mặc định và đã bao gồm trong gói của bạn. Premium là các địa chỉ IP dân cư (home addresses), được lấy từ lưu lượng premium trong gói cộng với lượng bạn mua thêm. Trên mạng shared, -fallback-premium cho phép kết nối chuyển sang exit premium khi exit shared không thể xử lý. Tính năng này tắt trừ khi bạn yêu cầu, và nó chỉ kích hoạt khi hạn mức premium vẫn còn. Bật sẵn theo mặc định đồng nghĩa với việc tự ý quyết định sử dụng hạn mức đó thay cho bạn.
Country có thể lặp lại, vì vậy -country-de-country-fr là phạm vi gồm hai quốc gia. Vùng, thành phố, mạng theo số AS, thiết bị (windows, android, ios, mac) và lifetime (3 đến 1440 phút) chỉ áp dụng cho premium. Yêu cầu thành phố trên mạng shared sẽ nhận mã 400 thay vì xử lý theo dạng best effort. Mạng shared chỉ hỗ trợ chọn theo quốc gia và không chi tiết hơn, vì bộ lọc thành phố mà phần lớn không thể đáp ứng thì còn tệ hơn là không có bộ lọc nào.
-session-<name> (1 đến 32 chữ cái, chữ số hoặc dấu gạch dưới) giúp giữ kết nối cố định (sticky): mọi kết nối mang tên đó đều dùng chung một địa chỉ. Trên shared, địa chỉ được duy trì theo cửa sổ trượt 10 phút, do đó nó tồn tại chừng nào bạn còn tiếp tục dùng. Trên premium, nó giữ theo lifetime bạn đặt hoặc mặc định của mạng. Bỏ qua session và mỗi kết nối sẽ đi ra từ một địa chỉ mới.
Ngoài ra còn có các thiết lập mặc định đã lưu. Targeting được lưu trên proxy user trong Dashboard sẽ áp dụng cho mọi kết nối của user đó, giúp chuỗi cấu hình có thể rút gọn chỉ còn thông tin xác thực cơ bản. Username vẫn được ưu tiên cho kết nối của chính nó, và any sẽ thu hồi một giá trị đã lưu: -city-any yêu cầu một key vốn ghi nhớ Munich cho toàn bộ nước Đức. Các client có thể thêm header vào CONNECT (curl hỗ trợ thông qua --proxy-header) có thể gửi các tùy chọn tương tự dưới dạng X-Foura-Country, X-Foura-Session và phần còn lại, và header luôn được ưu tiên hơn username.
Tác động
Hầu hết những điều này giúp bạn không còn phải đặt ra các câu hỏi thắc mắc nữa.
Tại sao tôi bị từ chối? Mỗi lần từ chối sau khi kiểm tra thông tin xác thực đều mang một header X-Foura-Error với một dòng lý do. Mã 400 nêu rõ tùy chọn cùng các giá trị được chấp nhận. Mã 429 cho biết bạn đã chạm đến giới hạn nào trong gói: số tunnel mở cùng lúc, số lượt mở tunnel mỗi phút, hoặc lưu lượng tiêu chuẩn trong chu kỳ thanh toán.
Hạn mức thuộc về ai? Của tài khoản. Tunnel và số lượt mở được tính theo tài khoản thay vì theo từng proxy user, vì vậy credential thứ hai không mang lại hạn mức thứ hai. Số byte được tính vào băng thông của gói, và số byte premium được tính vào hạn mức premium nằm trong tổng số đó, không cộng dồn thêm. Với gói bán theo credit, cổng có dung lượng gigabyte đi kèm riêng và có thể nạp thêm tại trang Billing. Sẽ không có gì bị tính phí khi không có tunnel nào được mở.
Ai sở hữu credential? Hiện tại có thể là một organization, do đó trình tải dữ liệu của công ty sẽ không bị dừng lại khi một nhân sự rời đi. Member có thể dùng và đọc mật khẩu; admin và owner có thể xoay vòng (rotate), vô hiệu hóa hoặc cấu hình lại target; chỉ owner mới có thể chuyển nó ra ngoài.
Nó đã làm được những gì? Chuyển khóa chuyển Product trên Overview, Metrics hoặc Activity sang Proxy: các tunnel trong cùng nhóm kết quả như các request API của bạn, số lượng đang mở hiện tại, thời gian thiết lập và lưu lượng truy cập, được phân tách theo proxy user, mục tiêu, quốc gia đầu ra hoặc IP của client. Một phiên đã có sẵn địa chỉ thường kết nối nhanh chóng chỉ dưới một giây.
Nhưng cổng kết nối là một đường ống, và đó là sự đánh đổi. Client của bạn giao tiếp với trang web thông qua tunnel, do đó các profile trình duyệt, validate rules của bạn và xử lý trang tương tác không nằm trên đường dẫn đó. Nó cũng đo lường dung lượng byte: một trang từ chối được trả về qua một tunnel đang mở vẫn được tính dung lượng byte như bất kỳ trang nào khác, trong khi trên API, một request không thành công sẽ không bị tính phí. Hãy truyền tải byte qua cổng kết nối; gửi những trang web chặn truy cập sang API.
Dành cho người dùng nâng cao
Khi hạn mức premium đã sử dụng hết, ba tuyến đường dẫn vào mạng đó sẽ nhận được ba phản hồi khác nhau, hoàn toàn có chủ đích. Kết nối chỉ định -network-premium bị từ chối với lỗi 403 nêu rõ lý do, vì nếu caller được âm thầm phục vụ từ một nơi khác, họ sẽ tiếp tục gửi request rồi tìm kiếm trên hóa đơn một dòng premium không bao giờ xuất hiện. Fallback đơn giản là không được kích hoạt, và cấu hình premium mặc định được lưu trên proxy user sẽ hạ cấp về mạng dùng chung, do đó tunnel vẫn được mở. Cả hai trường hợp đều không chủ động chọn chi tiêu cho kết nối đó.
Ba trường hợp kết hợp sau sẽ bị từ chối hoàn toàn thay vì chỉ đáp ứng một phần: targeting chi tiết hơn trên mạng dùng chung, -fallback-premium cùng với -network-premium, và targeting chi tiết hơn khi fallback đang bật. Cổng này chỉ hỗ trợ CONNECT, do đó client chuyển tiếp một request http:// thông thường thay vì tạo tunnel sẽ nhận mã lỗi 405 (curl tạo tunnel với --proxytunnel). Trình duyệt được điều khiển qua cổng này phải luôn mang theo tên session, vì một lần tải trang sẽ mở hàng chục kết nối.
Nhiều worker, mỗi worker trên một địa chỉ riêng? Hãy gán cho mỗi worker một tên session riêng:
import requests
TEMPLATE = "http://USERNAME-country-de-session-{name}:PASSWORD@proxy.foura.ai:34004"
def worker_session(name):
proxy = TEMPLATE.format(name=name)
s = requests.Session()
s.proxies = {"http": proxy, "https": proxy}
return s
workers = [worker_session(f"w{i}") for i in range(4)]
print(workers[0].get("https://example.com").status_code)
Dashboard cũng thực hiện tương tự ở quy mô lớn: bật Sticky, chọn số lượng, và tab Connection string sẽ liệt kê mỗi dòng một địa chỉ, dưới dạng URL hoặc host:port:user:pass dành cho các trình quản lý proxy. Gặp lỗi bị từ chối kết nối? Thêm -sv vào lệnh curl và pipe sang 2>&1 | grep -i x-foura-error. Mọi tùy chọn đều có trong proxy port reference, và phần cấu hình trên Dashboard nằm ở Proxy Users.
Kế hoạch tiếp theo
Client đầu tiên chúng tôi xây dựng dựa trên proxy user chính là sản phẩm nội bộ. FourA Chrome extension định tuyến trình duyệt của bạn qua một trong số đó: chọn mạng và quốc gia, bật công tắc, và một dòng trạng thái sẽ hiển thị địa chỉ mà các trang web nhìn thấy. Đây là bản beta, chưa có trên Chrome Web Store, được cài đặt từ mục Tools trong Dashboard ở chế độ developer mode. Về sau, organization billing đã có trên roadmap công khai, điều này rất quan trọng vì proxy user của một organization sẽ tính phí cho chủ sở hữu của organization đó hiện tại.
Proxy URL là giao thức tích hợp lâu đời nhất, và mọi công cụ bạn dùng đều đã hỗ trợ nó. Phần đáng để tối ưu chưa bao giờ là đường hầm kết nối. Đó là ý nghĩa mà chuỗi ký tự đứng trước nó được phép biểu thị, và điều gì sẽ xảy ra khi bạn cấu hình sai.