Proxychains bao quanh một tiến trình gỡ lỗi Python có thể bắt hai kết nối khác nhau: kết nối dịch vụ ra ngoài của script và kết nối cục bộ của nó quay về PyCharm. Trình gỡ lỗi cần kết nối thứ hai ở lại cục bộ.

Ở nơi IDE và máy chủ hỗ trợ lớp bọc trình thông dịch, hãy trỏ nó tới trình thông dịch thực tế của dự án:

#!/bin/sh
exec /usr/bin/proxychains4 -f /home/alex/proxychains-debug.conf "/home/alex/project/.venv/bin/python" "$@"

Thay cả hai đường dẫn tệp thực thi và đường dẫn cấu hình. Việc chuyển tiếp "$@" giữ nguyên các đối số gỡ lỗi riêng lẻ của IDE. exec ngăn tiến trình được khởi chạy để lại một lớp vỏ bọc không cần thiết giữa IDE và tiến trình con của nó.

Trong cấu hình Proxychains chuyên dụng đó, giữ chuỗi dự định và thêm ngoại lệ loopback trực tiếp phù hợp:

localnet 127.0.0.0/255.0.0.0
localnet ::1/128

Các quy tắc này bỏ qua chuỗi đối với đích loopback dạng số. Cấu hình thượng nguồn được cung cấp ghi lại các hạn chế khi khớp tên máy chủ với proxy_dns, vì vậy khi chẩn đoán đường đó hãy ưu tiên địa chỉ loopback dạng số thực tế của trình gỡ lỗi. Không đặt subnet ánh xạ DNS từ xa vào cùng dải bị loại trừ.

Giữ nguyên danh tính của trình thông dịch

Dùng /usr/bin/python3 trong lớp bọc có thể âm thầm chọn một môi trường khác từ .venv của dự án. Khi đó các gói bị thiếu trông giống lỗi liên quan đến proxy, dù một trình thông dịch khác đã khởi động.

Proxychains dựa vào việc chặn thư viện động được hỗ trợ. Việc IDE từ chối một lớp bọc như trình thông dịch, một tiến trình macOS được bảo vệ hay một máy khách mạng liên kết tĩnh là một điều kiện tương thích riêng. Giới hạn cách bố trí trong tiến trình Python dự định và xác minh trình thông dịch đã chọn trong cấu hình của IDE.

Bài viết liên quan