Cách lập trình proxy trong Python: Hướng dẫn HTTP an toàn
Tóm tắt
Lập trình một proxy là cách hữu ích để học về định tuyến HTTP, nhưng một proxy trong hướng dẫn nên luôn gắn với localhost và bị giới hạn bởi danh sách cho phép đích đến.
Ví dụ dưới đây triển khai một proxy HTTP chuyển tiếp nhỏ bằng Python, hỗ trợ GET, từ chối CONNECT HTTPS, loại bỏ các tiêu đề hop-by-hop và áp dụng thời gian chờ upstream.
Một proxy sản xuất cũng cần xác thực, kiểm soát truy cập, ghi nhật ký kiểm toán, giới hạn tài nguyên, xử lý lạm dụng, chính sách TLS, giám sát và kiểm tra DNS và URL cẩn thận.
Kiểm tra proxy với một máy chủ cục bộ trước khi cho phép bất kỳ đích công khai nào, và không bao giờ để cổng lắng nghe trực tiếp trên internet.
Đối với tự động hóa được ủy quyền cần định tuyến được quản lý thay vì một dự án học tập, Nstproxy Residential Prime Proxies hỗ trợ truy cập HTTP, HTTPS và SOCKS5 được tài liệu hóa.
Lập Trình Proxy Có Nghĩa Gì?
Lập trình một proxy có nghĩa là xây dựng một trung gian nhận yêu cầu từ khách hàng, xác thực nó, mở kết nối đến một đích được phê duyệt, chuyển tiếp yêu cầu và trả về phản hồi. Hướng dẫn này tập trung vào một proxy chuyển tiếp HTTP, không phải đối tượng Proxy của JavaScript, một proxy ngược, VPN, hoặc một relay công khai ẩn danh.
Đối với định tuyến ứng dụng được ủy quyền vượt ra ngoài bài học này, Nstproxy Residential Prime Proxies cung cấp một con đường sản phẩm được quản lý; hướng dẫn này vẫn giữ địa phương và trung lập với nhà cung cấp.
Một proxy chuyển tiếp hoạt động thay cho khách hàng; một proxy ngược hoạt động trước một hoặc nhiều máy chủ gốc. Sự phân biệt này quan trọng vì ranh giới bảo mật, định dạng yêu cầu và các kiểm soát triển khai là khác nhau. Hướng dẫn MDN về proxy và đường hầm giải thích cả hai vai trò và mô tả cách phương thức HTTP CONNECT tạo một đường hầm cho lưu lượng TLS.
Trải nghiem Nstproxy - Bat dau dung thu mien phi ngay
Triển khai học tập trong bài viết này có một hợp đồng cố ý hẹp:
Khả năng
Bao gồm
Lý do
Yêu cầu HTTP hình thức tuyệt đối
Có
Một proxy chuyển tiếp nhận một URL đích đầy đủ từ khách hàng.
Yêu cầu GET
Có
Đủ để chứng minh việc phân tích, xác thực, chuyển tiếp và relay.
Danh sách cho phép đích đến
Có
Ngăn chặn máy chủ hướng dẫn trở thành một relay không hạn chế.
Thời gian chờ upstream
Có
Giới hạn các kết nối bị treo.
HTTPS CONNECT
Không
Đường hầm cần xác thực riêng biệt, chính sách cổng và logic relay hai chiều.
Bộ nhớ đệm, xác thực và khả năng quan sát
Không
Những điều này thuộc về thiết kế sản xuất, không phải ví dụ giảng dạy ngắn gọn.
Để làm mới về dòng yêu cầu, tiêu đề và mã trạng thái, hãy xem lại glossary HTTP của Nstproxy. Nếu mục tiêu thực sự của bạn là tiếp cận một máy chủ ứng dụng, thì định nghĩa proxy ngược sẽ là điểm khởi đầu phù hợp hơn.
border-radius:8px;background:rgba(255,255,255,.94);box-shadow:01px2pxrgba(20,30,50,.03);font-size:16px;line-height:20px;}.link-icon{position: absolute;top:9px;left:12px;width:18px;height:18px;color:#1e5eff;}.client-card{position: absolute;top:75px;left:0;z-index:3;width:95px;height:102px;border:1px solid #d7dbe2;border-radius:18px;background:rgba(255,255,255,.89);text-align: center;box-shadow:01px2pxrgba(20,30,50,.02);}.monitor{position: relative;width:35px;height:25px;margin:18px auto 12px;border:2px solid #626772;border-radius:3px;}.monitor:before{content:"";position: absolute;left:15px;bottom:-9px;width:2px;height:8px;background:#626772;}.monitor:after{content:"";position: absolute;left:9px;bottom:-11px;width:15px;height:2px;background:#626772;border-radius:2px;}.client-label{font-size:18px;line-height:22px;}.nst-card{position: absolute;top:63px;left:248px;z-index:3;width:118px;height:124px;border:1.5px solid #81a4ff;border-radius:22px;background:rgba(255,255,255,.94);box-shadow:08px20pxrgba(53,98,215,.08);text-align: center;}.hex-logo{width:58px;height:58px;margin:15px auto 2px;}.nst-label{color:#1552ee;font-size:19px;font-weight:600;line-height:24px;}.line-client{position: absolute;top:124px;left:95px;z-index:1;width:153px;border-top:2px dashed #cbd0d8;}.line-client:before,.line-client:after{content:"";position: absolute;top:-7px;width:12px;height:12px;border-radius:50%;}.line-client:before{left:62px;background:#adb4bf;box-shadow:0004pxrgba(255,255,255,.7);}.line-client:after{right:-4px;background:#d2d6dd;}.line-main{position: absolute;top:124px;left:366px;z-index:1;width:98px;height:2px;background:#1e59f3;}.junction{position: absolute;top:117px;left:455px;z-index:4;width:16px;height:16px;border-radius:50%;background:#1e59f3;box-shadow: inset 0005px#fff;}.country-rail{position: absolute;top:60px;left:463px;z-index:1;width:60px;height:128px;border-left:2px solid #cdd2da;border-top:2px solid #cdd2da;border-bottom:2px solid #cdd2da;border-radius:18px0018px;}.country-card{position: absolute;left:515px;z-index:3;width:106px;height:50px;border:1px solid #d5d9e0;border-radius:15px;background:rgba(255,255,255,.92);box-shadow:01px2pxrgba(20,30,50,.03);font-size:18px;line-height:48px;white-space: nowrap;}.country-card.us{top:38px;}.country-card.de{top:102px;}.country-card.sg{top:166px;}.flag{display: inline-block;margin:012px022px;font-size:23px;line-height:1;vertical-align:-2px;}.country-dot{position: absolute;left:511px;z-index:4;width:11px;height:11px;border:3px solid #fff;border-radius:50%;background:#cbd0d8;}.country-dot.us{top:56px;}.country-dot.de{top:120px;}.country-dot.sg{top:184px;}@mediaonly screen and(max-width:650px){.canvas{padding:12px;}.copy-cell,.visual-cell{display: block;width:100%;}.copy-cell{padding:32px24px16px;text-align: center;}.description{line-height:1.6;}.description br{display: none;}.visual-cell{padding:16px12px28px;}.proxy-visual{left:50%;margin:00-46px-312.5px;transform-origin: top center;transform:scale(.82);}}@mediaonly screen and(max-width:560px){h1{font-size:22px;}.description{font-size:14px;}.proxy-visual{transform:scale(.54);margin-bottom:-119px;}} </style>
<main class="canvas">
<section class="feature" aria-label="Kết nối với Nstproxy">
<table class="layout" role="presentation" cellpadding="0" cellspacing="0">
<tr>
<td class="copy-cell">
<h1>Chuyển từ Proxy Học Tập sang Hệ Thống Proxy Quản Lý</h1>
<p class="description">Sử dụng các điểm cuối proxy xác thực khi bạn cần định tuyến đáng tin cậy, luân chuyển, và hỗ trợ giao thức mà không cần duy trì một proxy công khai.</p>
<a class="cta" href="https://app.nstproxy.com/auth/login?utm_source=official&utm_medium=blog&utm_campaign=/how-to-code-a-proxy/" target="_blank" rel="noopener">Khám Phá Nstproxy Proxies</a>
</td>
<td class="visual-cell">
<div class="proxy-visual" aria-label="Sơ đồ một khách hàng kết nối qua Nstproxy">
<div class="mode-pill">
<svgclass="link-icon"viewBox="0 0 24 24"aria-hidden="true"><pathd="M10.6 13.4a1 1 0 0 0 1.4 1.4l3.5-3.5a3 3 0 0 0-4.2-4.2L9.5 8.9"fill="none"stroke="currentColor"stroke-width="1.8"stroke-linecap="round"/><pathd="M13.4 10.6a1 1 0 0 0-1.4-1.4l-3.5 3.5a3 3 0 0 0 4.2 4.2l1.8-1.8"fill="none"stroke="currentColor"stroke-width="1.8"stroke-linecap="round"/></svg> Ghim
</div><divclass="client-card"><divclass="monitor"></div><divclass="client-label">Khách hàng</div></div><spanclass="line-client"></span><divclass="nst-card"><svgclass="hex-logo"viewBox="0 0 64 64"aria-hidden="true"><pathd="M32 4 56 18v28L32 60 8 46V18Z"fill="none"stroke="#1e5eff"stroke-width="3"/><pathd="M23 43V21l18 22V21"fill="none"stroke="#1e5eff"stroke-width="3"stroke-linecap="round"stroke-linejoin="round"/></svg><divclass="nst-label">Nstproxy</div></div><spanclass="line-main"></span><spanclass="junction"></span><spanclass="country-rail"></span><spanclass="country-dot us"></span><spanclass="country-dot de"></span><spanclass="country-dot sg"></span><divclass="country-card us"><spanclass="flag">🇺🇸</span>Mỹ</div><divclass="country-card de"><spanclass="flag">🇩🇪</span>Đức</div><divclass="country-card sg"><spanclass="flag">🇸🇬</span>Sinh GAP</div></div></td></tr></table></section></main>
## Hướng Dẫn Chi Tiết
Cách an toàn nhất để học cách lập trình một proxy là xây dựng một phiên bản giới hạn chỉ HTTP, chạy cả hai đầu trên localhost và xác minh từng hành vi trước khi mở rộng quyền truy cập.
### Phương pháp 1: Xây Dựng Proxy Chuyển Tiếp Giới Hạn Trong Python
Phương pháp này sử dụng thư viện tiêu chuẩn của Python để hành vi mạng quan trọng vẫn rõ ràng. Tài liệu <ahref="https://docs.python.org/3/library/http.server.html"rel="nofollow noopener"><strong>Python `http.server`</strong></a> cũng cảnh báo rằng mô-đun này không được thiết kế cho sản xuất, đó chính xác là lý do mà triển khai này được trình bày như một dự án học tập có kiểm soát.
#### Bước 1: Lưu Máy Chủ Proxy
Tạo `proxy_server.py` với mã sau:
```python
from __future__ import annotations
import argparse
import socket
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from urllib.parse import urlsplit
ALLOWED_HOSTS = {"127.0.0.1", "localhost", "example.com"}
HOP_BY_HOP = {
"connection", "keep-alive", "proxy-authenticate",
"proxy-authorization", "te", "trailer",
"transfer-encoding", "upgrade",
}
class ForwardProxy(BaseHTTPRequestHandler):
protocol_version = "HTTP/1.1"
def do_GET(self) -> None:
target = urlsplit(self.path)
if target.scheme != "http" or not target.hostname:
self.send_error(400, "Sử dụng URL http:// tuyệt đối")
return
if target.hostname not in ALLOWED_HOSTS:
self.send_error(403, "Máy chủ không có trong danh sách cho phép")
return
port = target.port or 80
path = target.path or "/"
if target.query:
path += "?" + target.query
headers = [
f"GET {path} HTTP/1.0",
f"Host: {target.hostname}:{port}",
"Connection: close",
]
for key, value in self.headers.items():
if key.lower() not in HOP_BY_HOP and key.lower() != "host":
headers.append(f"{key}: {value}")
try:
with socket.create_connection((target.hostname, port), timeout=5) as upstream:
upstream.sendall(("\r\n".join(headers) + "\r\n\r\n").encode("latin-1"))
while chunk := upstream.recv(64 * 1024):
self.connection.sendall(chunk)
except (OSError, TimeoutError) as exc:
self.send_error(502, f"Máy chủ phía trên thất bại: {exc}")
def do_CONNECT(self) -> None:
self.send_error(501, "Kết nối tunneling cố ý không được cài đặt")
def main() -> None:
parser = argparse.ArgumentParser(description="Proxy HTTP giáo dục giới hạn")
parser.add_argument("--host", default="127.0.0.1")
parser.add_argument("--port", type=int, default=8080)
args = parser.parse_args()
server = ThreadingHTTPServer((args.host, args.port), ForwardProxy)
print(f"Đang lắng nghe trên http://{args.host}:{args.port}", flush=True)
server.serve_forever()
if __name__ == "__main__":
main()
Danh sách cho phép là kiểm soát an toàn trung tâm trong ví dụ này. Một dịch vụ thực tế cũng phải phân giải tên miền, từ chối các địa chỉ riêng tư, loopback, link-local và dịch vụ siêu dữ liệu khi chúng không được chỉ định rõ ràng, sau đó lặp lại xác thực đó qua các chuyển hướng. Hướng dẫn ngăn chặn OWASP SSRF cung cấp một mô hình xác thực đầy đủ hơn.
Bước 2: Khởi động một Mục tiêu Cục bộ và Proxy
Mở hai terminal trong cùng một thư mục. Khởi động một mục tiêu cục bộ trong terminal đầu tiên:
Việc gán cả hai tiến trình tới 127.0.0.1 giữ cho bài kiểm tra chỉ có thể truy cập từ cùng một máy. Không thay đổi máy chủ proxy thành 0.0.0.0 trừ khi đã có tường lửa, lớp xác thực và chính sách mạng khách hàng rõ ràng.
Bước 3: Gửi Yêu cầu Qua Proxy
Sử dụng một terminal thứ ba để ép curl qua proxy cục bộ:
Một phản hồi thành công bắt đầu bằng nội dung của proxy_server.py. Trong lần xác minh cho bài viết này, proxy đã in ra Listening on http://127.0.0.1:8080, và khách hàng đã nhận tệp qua proxy. Điều này kiểm tra toàn bộ đường dẫn: khách hàng → proxy → nguồn cục bộ → proxy → khách hàng.
Bước 4: Kiểm tra Ranh giới Thất bại
Một bài kiểm tra proxy hữu ích xác minh các đường đi từ chối, không chỉ đường đi thành công. Thử một URL HTTPS và xác nhận máy chủ trả về 501, vì hướng dẫn cố ý không triển khai CONNECT. Thử một tên miền ngoài ALLOWED_HOSTS và xác nhận phản hồi là 403.
Tiêu chuẩn ngữ nghĩa HTTP cho CONNECT ghi chú rằng các điểm đến đường hầm tùy ý mang lại rủi ro đáng kể và khuyến nghị hạn chế chúng vào một bộ các cổng hoặc mục tiêu an toàn đã biết. Xem đó như một yêu cầu sản xuất, không phải là một cải tiến tùy chọn.
Phương pháp 2: Sử dụng Điểm cuối Proxy Quản lý trong Mã ứng dụng
Sử dụng một điểm cuối quản lý khi yêu cầu kinh doanh là định tuyến, kiểm soát vị trí, hành vi phiên, hoặc hoạt động lưu lượng thay vì học cơ chế giao thức. Bảo trì một proxy tùy chỉnh có nghĩa là sở hữu xác thực, vá lỗi, uy tín IP, dung lượng, phản ứng lạm dụng, ghi lại, và tính khả dụng.
Nstproxy Residential Prime Proxies phù hợp cho việc thu thập dữ liệu được phép, giám sát giá cả, kiểm tra quảng cáo, và kiểm tra mạng khi một nhóm cần truy cập proxy quản lý thay vì một relay tự xây dựng. Tài liệu hiện tại từ phía đầu tiên liệt kê hỗ trợ giao thức HTTP, HTTPS và SOCKS5 cùng với mô hình lập hóa đơn theo gói và theo yêu cầu; bài viết này cố ý tránh công bố giá số. Bề mặt sản phẩm cũng mô tả hành vi phiên có thể chọn và nhắm mục tiêu địa lý, điều này nên được xác nhận cho kế hoạch cụ thể trước khi triển khai. Nstproxy không thay thế quyền cho trang đích, chính sách tỷ lệ, hoặc xác thực cấp ứng dụng. Chọn nó khi các điều khiển định tuyến và hoạt động được quản lý giải quyết vấn đề thực tế.
Giao thức proxy đã được tài liệu hóa: Chọn HTTP, HTTPS, hoặc SOCKS5 theo thư viện khách hàng và quy trình đích thay vì sửa đổi proxy học để bao phủ mọi giao thức.
Mô hình lập hóa đơn linh hoạt: Bề mặt sản phẩm hiện tại cung cấp các tùy chọn gói và theo mức sử dụng, vì vậy các nhóm có thể so sánh lập hóa đơn so với các hồ sơ đã được chấp nhận hoặc các kiểm tra hoàn thành mà không cần dựa vào một relay mở tự tạo.
Điều khiển phiên và nhắm mục tiêu: Sử dụng bảng điều khiển hiện tại và tài liệu sản phẩm để chọn vị trí và hành vi phiên, sau đó xác thực đầu ra so với yêu cầu kinh doanh.
Một proxy sản xuất cần các điều khiển ở mọi ranh giới, vì việc chuyển tiếp một yêu cầu HTTP hợp lệ chỉ là phần nhỏ nhất của hệ thống.
Xác thực và ủy quyền: Nhận diện từng khách hàng, phạm vi điểm đến và phương thức, luân phiên thông tin xác thực, và thu hồi quyền truy cập ngay lập tức.
Xác thực điểm đến: Phân tích một lần, chuẩn hóa cẩn thận, phân giải DNS, chặn các dải địa chỉ không an toàn, giới hạn các chuyển hướng, và bảo vệ chống lại việc tái liên kết DNS.
Độ chính xác của giao thức: Hỗ trợ khung tin nhắn, truyền dữ liệu, giữ kết nối, trailer, nâng cấp, CONNECT, và hủy bỏ mà không gặp phải hiện tượng buôn lậu yêu cầu hoặc mất đồng bộ.
Giới hạn tài nguyên: Kích thước tiêu đề bị ràng buộc, kích thước thân, độ đồng thời, thời gian kết nối, băng thông và độ sâu hàng đợi.
Khả năng quan sát: Ghi lại ID yêu cầu, thời gian, lớp đích, kết quả và số byte mà không ghi lại bí mật hoặc URL nhạy cảm đầy đủ.
Xử lý lạm dụng: Thi hành chính sách sử dụng chấp nhận, giới hạn tần suất, phát hiện bất thường và một con đường phản ứng sự cố.
Bảo mật triển khai: Chạy với quyền hạn tối thiểu, vá lỗi cho các phụ thuộc, cách ly dịch vụ và chỉ công khai listener mong muốn.
Hướng dẫn này loại bỏ các tiêu đề hop-by-hop phổ biến, nhưng không phải là một triển khai hoàn chỉnh của việc định dạng HTTP hiện đại. Nó cũng chỉ chuyển tiếp GET, chuyển đổi yêu cầu lên thành HTTP/1.0 và đóng kết nối lên sau mỗi phản hồi. Những lựa chọn đó làm cho hành vi dễ kiểm tra hơn; chúng không làm cho mã sẵn sàng cho sản xuất.
Vấn đề phổ biến và cách khắc phục
Phần lớn các nỗ lực ban đầu thất bại vì khách hàng không gửi yêu cầu theo dạng proxy, đích đến không được phép, hoặc yêu cầu cần tunneling HTTPS.
Khách hàng kết nối trực tiếp
Đặt rõ ràng proxy cho khách hàng và tắt bất kỳ quy tắc no_proxy nào cho bài kiểm tra. Lệnh mẫu curl sử dụng --noproxy '' để lưu lượng localhost không vượt qua proxy.
Proxy trả về 400
Proxy trả về 400 khi đối tượng yêu cầu không phải là URL http:// tuyệt đối. Proxy chuyển tiếp nhận URI dưới dạng tuyệt đối, trong khi máy chủ nguồn thường chỉ nhận được đường dẫn và truy vấn.
Proxy trả về 403
Tên miền đích không có trong ALLOWED_HOSTS. Chỉ thêm một miền mà bạn sở hữu hoặc được ủy quyền để kiểm tra, và giữ lại xác thực phạm vi IP trước khi triển khai rộng rãi hơn.
HTTPS trả về 501
Ví dụ từ chối CONNECT theo thiết kế. Việc thêm một đường hầm TCP hai chiều mà không có xác thực và hạn chế đích có thể tạo ra một proxy mở, vì vậy hãy sử dụng một máy chủ trưởng thành hoặc dịch vụ quản lý cho các quy trình HTTPS thực tế.
Kết luận: Xây dựng để học hỏi, Mua để vận hành
Câu trả lời tốt nhất cho việc làm thế nào để lập trình một proxy là bắt đầu với một bộ chuyển tiếp HTTP nhỏ một cách có chủ đích và chứng minh hành vi định tuyến và từ chối của nó trên localhost. Giữ lại danh sách cho phép, thời gian chờ, giới hạn phương thức và kết nối cục bộ nguyên vẹn trong khi học hỏi; chọn một máy chủ proxy trưởng thành hoặc nhà cung cấp quản lý khi yêu cầu mở rộng ra ngoài việc kiểm tra và giáo dục. Hành động tiếp theo của bạn nên là thực hiện bài kiểm tra cục bộ, xác nhận các đường dẫn 403 và 501, và ghi lại các điều khiển sản xuất mà trường hợp sử dụng của bạn sẽ yêu cầu. Đối với các quy trình sau này cần tới các nhóm trung tâm, quy tắc định tuyến, nhật ký và giám sát, hãy đánh giá Nstproxy Proxy Manager như một lớp vận hành riêng biệt.
Trải nghiệm Nstproxy — Bắt đầu dùng thử miễn phí ngay hôm nay
Q: Ngôn ngữ lập trình nào tốt nhất để mã hóa một proxy?
Python là một ngôn ngữ dạy học thực tế vì thư viện chuẩn của nó làm lộ rõ các socket và xử lý HTTP. Go, Rust, Java và C có thể là những lựa chọn tốt hơn cho các ràng buộc về hiệu suất hoặc triển khai cụ thể, nhưng sự lựa chọn ngôn ngữ không loại bỏ nhu cầu về tính chính xác của giao thức và các biện pháp bảo mật.
Q: Liệu proxy Python này có thể xử lý HTTPS không?
Không, proxy trong hướng dẫn cố ý từ chối các yêu cầu HTTPS CONNECT với 501. Tunneling HTTPS sản xuất cần xác thực, chính sách đích và cổng, chuyển tiếp toàn bộ, thời gian chờ, hủy bỏ và ghi lại cẩn thận.
Q: Chạy máy chủ proxy có hợp pháp không?
Chạy một proxy thường là một khả năng kỹ thuật, nhưng việc sử dụng hợp pháp phụ thuộc vào quyền tài phán, ủy quyền, dữ liệu, hợp đồng và các quy tắc của đích đến. Chỉ sử dụng ví dụ trên các hệ thống mà bạn sở hữu hoặc có quyền thử nghiệm, và nhận tư vấn pháp lý cho các quy trình có rủi ro cao hoặc được quản lý.
Q: Tại sao proxy lại phải liên kết với localhost?
Liên kết với localhost ngăn các máy khác tiếp cận dịch vụ hướng dẫn chưa hoàn thiện. Một proxy có thể truy cập qua internet mà không có xác thực và kiểm soát quyền truy cập có thể bị lạm dụng như một relay mở và có thể chuyển giao rủi ro vận hành và pháp lý cho người điều hành của nó.
Q: Làm thế nào để tôi biết các yêu cầu thực sự đã đi qua proxy?
Kiểm tra cả hai đầu: proxy nên ghi lại yêu cầu của khách hàng, và mục tiêu cục bộ nên ghi lại yêu cầu của proxy. Thân trả về nên khớp với tài nguyên đích, trong khi một yêu cầu của khách hàng trực tiếp được thực hiện mà không cần proxy nên không tạo ra bất kỳ mục nhật ký proxy nào mới.
Q: Tôi nên xây dựng hay mua hạ tầng proxy?
Xây dựng một proxy nhỏ để học hỏi hoặc đáp ứng một yêu cầu nội bộ được kiểm soát chặt chẽ; sử dụng cơ sở hạ tầng trưởng thành hoặc được quản lý khi bạn cần xác thực, độ tin cậy, phạm vi giao thức, kiểm soát phiên, định tuyến địa lý, giám sát và phản hồi hành vi lạm dụng. So sánh tổng gánh nặng hoạt động, không chỉ là số lượng mã.
Lena Zhou
Aug. 17th 2026
110M+ IP that voi ti le truy cap thanh cong 99.9%
Phan hoi trung binh ~0.5s cho tac vu dong thoi cao
Chi tu $0.1/GB
Truy cap ngay cac pool proxy residential, datacenter, IPv6 va ISP cao cap.