Quay lại danh sách
Cấu hình SOCKS5 proxy cho Python và trình duyệt để kiểm tra IP thoát

Cấu hình SOCKS5 proxy cho Python và trình duyệt để kiểm tra IP thoát

3 tháng 11, 2026

Giới thiệu

Khi bạn sử dụng dịch vụ proxy xoay, một bước cơ bản nhưng thường bị bỏ qua là xác định chính xác IP nào đang được dùng để gửi request. Thông tin này giúp bạn gỡ lỗi khi bị chặn, kiểm tra xem nội dung có thay đổi theo địa điểm hay không, và xác nhận rằng session đã đổi IP sau khi gọi lệnh xoay.

Bài viết này tập trung vào một mục cụ thể: cấu hình SOCKS5 cho Python requests và trình duyệt, rồi kiểm tra IP thoát bằng cURL và Python. Bạn sẽ có thể sao chép các đoạn mã, thay thông tin thực tế vào và chạy ngay lập tức.

Chuẩn bị thông tin session

Mỗi session trên RoProxy có cặp USERNAME/PASSWORD riêng và kết nối qua một GATEWAY_HOST. Cổng HTTP_PORT dùng cho cả HTTP và HTTPS. Nếu bạn dùng gói Pro hoặc Business, session cũng có cổng SOCKS5_PORT.

URL proxy dạng HTTP (dùng cho HTTP và HTTPS):

http://USERNAME:PASSWORD@GATEWAY_HOST:HTTP_PORT

URL proxy dạng SOCKS5:

socks5://USERNAME:PASSWORD@GATEWAY_HOST:SOCKS5_PORT

Thay tất cả giá trị viết hoa bằng thông tin thực tế từ session của bạn. Không nên cài đặt cứng mật khẩu vào mã nguồn trong môi trường production; hãy dùng biến môi trường hoặc tệp cấu hình riêng.

HTTP proxy hay SOCKS5?

Cả hai đều có thể forwarded trafic web, nhưng có điểm khác nhau:

  • HTTP proxy: tối ưu cho trafic HTTP/HTTPS, hầu hết thư viện và trình duyệt đều hỗ trợ sẵn.
  • SOCKS5: hoạt động ở tầng thấp hơn, có thể chuyển tiếp TCP qua CONNECT, phù hợp khi ứng dụng không cho phép thiết lập proxy HTTP trực tiếp hoặc bạn cần truyền các giao thức khác ngoài web.

Nếu bạn chỉ cần gọi API web hoặc scrape trang web, HTTP proxy thường đủ. Nếu ứng dụng báo lỗi không hỗ trợ proxy HTTP, hãy thử SOCKS5.

Kiểm tra IP thoát bằng Python requests

Thư viện requests không hỗ trợ SOCKS5 theo mặc định. Bạn cần cài gói bổ sung:

pip install requests[socks]

Sau đó, sử dụng từ điển proxies như sau:

import requests

PROXIES = {
    "http": "socks5://USERNAME:PASSWORD@GATEWAY_HOST:SOCKS5_PORT",
    "https": "socks5://USERNAME:PASSWORD@GATEWAY_HOST:SOCKS5_PORT",
}

try:
    resp = requests.get(
        "https://api.ipify.org?format=json",
        proxies=PROXIES,
        timeout=15,
    )
    data = resp.json()
    print(f"IP thoát: {data.get('ip')}")
except Exception as e:
    print(f"Lỗi kết nối qua proxy: {e}")

Nếu bạn muốn dùng HTTP proxy thay vì SOCKS5, chỉ cần thay chuỗi proxies:

PROXIES = {
    "http": "http://USERNAME:PASSWORD@GATEWAY_HOST:HTTP_PORT",
    "https": "http://USERNAME:PASSWORD@GATEWAY_HOST:HTTP_PORT",
}

Kết quả từ api.ipify là một đối tượng JSON chứa trường ip. Hãy so sánh giá trị này với IP máy thật của bạn để xác định proxy đã hoạt động chưa.

Mã Python hoàn chỉnh để kiểm tra và xuất IP

Dưới đây là script bạn có thể lưu vào tệp và chạy trực tiếp. Nó thử kết nối qua SOCKS5, rồi in ra IP mà server nhìn thấy:

import os
import requests

def get_exit_ip(proxy_url: str) -> str:
    proxies = {"http": proxy_url, "https": proxy_url}
    resp = requests.get(
        "https://api.ipify.org?format=json",
        proxies=proxies,
        timeout=20,
    )
    resp.raise_for_status()
    return resp.json().get("ip", "không xác định")

if __name__ == "__main__":
    proxy_url = os.getenv(
        "PROXY_URL",
        "socks5://USERNAME:PASSWORD@GATEWAY_HOST:SOCKS5_PORT",
    )
    try:
        ip = get_exit_ip(proxy_url)
        print(f"IP thoát qua proxy: {ip}")
    except Exception as e:
        print(f"Không thể lấy IP: {e}")

Bạn có thể đặt biến môi trường PROXY_URL trước khi chạy:

export PROXY_URL="socks5://USERNAME:PASSWORD@GATEWAY_HOST:SOCKS5_PORT"
python kiem_tra_ip.py

Kiểm tra IP thoát bằng cURL

cURL hỗ trợ SOCKS5 qua tùy chọn -x. Lệnh dưới đây gửi request qua cổng SOCKS5 của session:

curl -x socks5://USERNAME:PASSWORD@GATEWAY_HOST:SOCKS5_PORT \
  https://api.ipify.org?format=json

Phiên bản HTTP proxy:

curl -x http://USERNAME:PASSWORD@GATEWAY_HOST:HTTP_PORT \
  https://api.ipify.org?format=json

Để xem chi tiết quá trình kết nối, thêm tùy chọn -v:

curl -v -x socks5://USERNAME:PASSWORD@GATEWAY_HOST:SOCKS5_PORT \
  https://httpbin.org/ip

httpbin.org/ip cũng trả về địa chỉ IP mà server nhìn thấy, hữu ích khi bạn cần kiểm tra định dạng JSON bên cạnh ipify.

Cấu hình SOCKS5 trong trình duyệt

Firefox cho phép nhập trực tiếp thông tin SOCKS5 trong giao diện:

  1. Mở Cài đặt > Cài đặt chung > Mạng cục bộ > Cách mạng proxy.
  2. Chọn Cấu hình proxy theo cách thủ công.
  3. Nhập GATEWAY_HOST vào ô SOCKS host và SOCKS5_PORT vào ô cổng.
  4. Chọn giao thức SOCKS5.
  5. Lưu lại và truy cập https://httpbin.org/ip để xem IP thoát.

Trình duyệt sẽ yêu cầu bạn nhập USERNAME và PASSWORD khi kết nối đầu tiên, nếu session yêu cầu xác thực.

Chrome không có bảng cài đặt proxy SOCKS5 đầy đủ trong giao diện người dùng. Cách phổ biến là khởi động trình duyệt từ dòng lệnh với tham số --proxy-server:

google-chrome --proxy-server="socks5://USERNAME:PASSWORD@GATEWAY_HOST:SOCKS5_PORT"

Sau khi cửa sổ mới mở, truy cập trang kiểm tra IP như trên để xác nhận.

Nếu bạn muốn tránh rò rỉ DNS, hãy đảm bảo yêu cầu DNS cũng được gửi qua proxy. Trong Firefox, bạn có thể mở trang about:config và đặt network.proxy.socks_remote_dns thành true.

Xoay IP khi cần qua API

Nếu IP hiện tại bị mục tiêu chặn hoặc bạn muốn đổi IP ngay lập tức, hãy gọi API xoay session. Mọi yêu cầu API phải kèm header:

Authorization: Bearer API_KEY

Liệt kê tất cả session của tài khoản:

GET https://backend-api.ro-proxy.com/api/session

Xoay IP cho một session cụ thể:

POST https://backend-api.ro-proxy.com/api/session/SESSION_ID/rotate

Ví dụ bằng cURL:

curl -X POST https://backend-api.ro-proxy.com/api/session/SESSION_ID/rotate \
  -H "Authorization: Bearer API_KEY"

Sau khi nhận phản hồi thành công, hãy chạy lại lệnh kiểm tra IP (cURL hoặc Python) để xác nhận địa chỉ IP đã thay đổi.

Lưu ý về chế độ xoay

Mỗi session có một trong ba chế độ xoay sau:

  • Sticky: giữ cùng một IP cho đến khi bạn xoay thủ công hoặc IP gặp sự cố.
  • Timed: đổi IP sau một khoảng thời gian mà bạn đặt trước.
  • Per request: cấp IP mới cho mỗi kết nối mới, chỉ có trên gói Business.

Chọn sticky khi bạn cần duy trì phiên làm việc dài, ví dụ đăng nhập hoặc duyệt nhiều trang trên cùng một trang web. Chọn timed hoặc per request khi muốn giảm nguy cơ bị chặn do gửi quá nhiều request từ một IP.

Các lỗi thường gặp và cách khắc phục

  • Lỗi 407: xác thực thất bại. Kiểm tra lại USERNAME và PASSWORD trong URL proxy.
  • Kết nối bị từ chối: GATEWAY_HOST hoặc cổng sai, hoặc session chưa được kích hoạt.
  • Timeout: mục tiêu phản hồi chậm hoặc proxy đang bận. Hãy tăng tham số timeout hoặc gọi API xoay IP để thử session khác.
  • IP không đổi sau khi xoay: hãy đợi vài giây rồi kiểm tra lại qua https://api.ipify.org?format=json. Một số mục tiêu cũng cache DNS, nên kết quả có thể hơi chậm phản ánh.

Kết luận

Việc cấu hình SOCKS5 đúng cách và kiểm tra IP thoát giúp bạn tự tin hơn khi dùng proxy xoay cho scraping, kiểm tra nội dung đa vùng hoặc quản lý nhiều tài khoản. Nếu cần đổi IP ngay lập tức, hãy sử dụng API xoay session kèm theo API_KEY. RoProxy cũng hỗ trợ tài khoản mới với session dùng thử, và bộ phận hỗ trợ sẵn sàng trên Telegram nếu bạn cần trợ giúp.