Có 2 khía cạnh cho câu hỏi của bạn -
- Đưa ra yêu cầu bằng Tor
- Gia hạn kết nối theo yêu cầu (trong trường hợp của bạn, sau mỗi yêu cầu)
Phần 1
Cách đầu tiên dễ thực hiện với requests
thư viện mới nhất (trở lên của v2.10.0) với yêu cầu bổ sung về requests[socks]
việc sử dụng proxy vớ.
Cài đặt -
pip install requests requests[socks]
Cách sử dụng cơ bản -
import requests
def get_tor_session():
session = requests.session()
session.proxies = {'http': 'socks5://127.0.0.1:9050',
'https': 'socks5://127.0.0.1:9050'}
return session
session = get_tor_session()
print(session.get("http://httpbin.org/ip").text)
print(requests.get("http://httpbin.org/ip").text)
Phần 2
Để gia hạn IP Tor, tức là để có một IP thoát mới có thể nhìn thấy được, bạn cần có khả năng kết nối với dịch vụ Tor thông qua nó ControlPort
và sau đó gửi NEWNYM
tín hiệu.
Cài đặt Tor bình thường không bật ControlPort
theo mặc định. Bạn sẽ phải chỉnh sửa tệp torrc của mình và bỏ ghi chú các dòng tương ứng.
ControlPort 9051
HashedControlPassword 16:05834BCEDD478D1060F1D7E2CE98E9C13075E8D3061D702F63BCD674DE
Xin lưu ý rằng phần HashedControlPassword
trên là dành cho mật khẩu "password"
. Nếu bạn muốn đặt một mật khẩu khác, hãy thay thế mật khẩu HashedControlPassword
trong torrc bằng cách ghi lại đầu ra từ tor --hash-password "<new_password>"
đâu <new_password>
là mật khẩu bạn muốn đặt.
................................................... ..............................
Cảnh báo cho người dùng Windows: xem bài đăng tại đây .
Có một sự cố trên các cửa sổ khi cài đặt cho bộ điều khiển trong tệp torrc bị bỏ qua nếu tor được cài đặt bằng lệnh sau:
tor --service install
Để giải quyết vấn đề, sau khi chỉnh sửa tệp torrc của bạn, hãy nhập các lệnh sau:
tor --service remove
tor --service install -options ControlPort 9051
................................................... ..............................
Được rồi, bây giờ chúng ta đã cấu hình Tor đúng cách, bạn sẽ phải khởi động lại Tor nếu nó đang chạy.
sudo service tor restart
Tor bây giờ sẽ được thiết lập và chạy trên 9051 ControlPort
mà qua đó chúng ta có thể gửi lệnh đến nó. Tôi thích sử dụng thư viện gốc chính thức để kiểm soát Tor.
Cài đặt -
pip install stem
Bây giờ bạn có thể gia hạn Tor IP bằng cách gọi hàm sau.
Gia hạn IP -
from stem import Signal
from stem.control import Controller
def renew_connection():
with Controller.from_port(port = 9051) as controller:
controller.authenticate(password="password")
controller.signal(Signal.NEWNYM)
Để xác minh rằng Tor có một IP thoát mới, chỉ cần chạy lại mã từ Phần 1. Vì lý do nào đó mà tôi không biết, bạn cần tạo một session
đối tượng mới để sử dụng IP mới.
session = get_tor_session()
print(session.get("http://httpbin.org/ip").text)