Python request auto by pass proxy?

Chào cả nhà,
Mình đang test proxy cho ứng dụng của mình. Mình có dùng squid proxy để test. Hệ điều hành UBuntu. Mình dùng trình duyệt để truy cập web thì thấy nó qua proxy (mình coi log proxy) nhưng request từ thằng thư viện requests thì không.

Ví dụ như requests.get(“google.com”), nó gần như đi thẳng qua proxy luôn, chẳng thấy proxy ghi lại record gì cả, phải thêm param proxies vào request như là requests.get(“google.com”, proxies=proxy-here) thì mình mới thấy proxy ghi lại record.

Mình set proxy ở setting của ubuntu luôn, mình nghĩ nó phải đi qua chứ nhỉ. Mọi người có gợi ý mình sai ở đâu không, mình tìm hiểu thử.
Cảm ơn cả nhà.

Mình không rành lắm về phần kỹ thuật sâu phía dưới, nhưng với kinh nghiệm xài máy tính của mình thì,

  • bạn có thể set proxy cho máy tính, mặc định các web browser thường sẽ tự hiểu và lấy thông tin này để xài luôn
  • nhưng bạn có thể config để xài các proxy khác nhau cho các software khác nhau, không nhất thiết phài xài duy nhất 1 proxy cho tất cả
  • với logic ý 2 bên trên, thì cái script python của bạn viết, đơn giản là nó không tự lấy thông tin proxy của máy, nên nó không xài proxy thôi.

Bạn có thể tham khảo thêm:

4 Likes

bạn đang nói reverse proxy hay forward proxy?
bạn muốn mọi request từ máy bạn đều qua proxy
hay mọi request đến từ server python đều đến proxy trước rồi mới qua python?

2 Likes

Mình thì chưa gặp trường hợp này bao giờ vì nếu đã set forward proxy cho toàn bộ các app trên máy thường thì nó sẽ chuyển tiếp lưu lượng toàn bộ.Trên Ubuntu thì trc kia mình k tìm ra app nào …Toàn phải dùng VPN để chuyển tiếp lưu lượng cho tất cả các app trên máy .Trên Win thì có Proxifier.
.Do k có app nào như Proxifier trên Ubuntu nên mình dùng Tails OS..Để chắc chắn 100 % lưu lượng sẽ đi qua proxy của mạng lưới Tor.

1 Like

Mình muốn mọi request từ máy mình đi ra internet đều phải thông qua proxy của mình

cái này bạn cần đặt ra một câu hỏi ngược lại

  1. có chắc squid proxy là thứ có chức năng đúng như bạn đang nghĩ hay không (route tất cả request đi internet của máy bạn đều thông qua nó), nghĩa là scope của nó như nào
  2. nếu như (1) là chắc chắn, thì bạn đã cấu hình đúng chưa

Vấn đề ở đây là bạn không nói tới request này dựa trên giao thức nào. Bởi vì mạng máy tính có rất nhiều giao thức, chạy ở các layer (7 layter cả thảy) khác nhau. Có khi muốn thực hiện trên máy tính không thành công mà buộc phải làm trên router.

Thường xuyên vọc các thứ có đụng chạm đến kiến thức mạng thì làm ơn học cho ngang tầm chứng chỉ CCNA đi rồi vọc. Mình thấy bạn đang tiếp cận vấn đề theo kiểu “vá xăm xe” thủng đâu vá đó, nhảy lung tung chọc chạch vụn vặt, cách tiếp cận này khó tiến bộ được lắm.

Cho nên, về mặt tổng quát bạn không có khả năng buộc các traffic phải đi qua proxy của bạn nếu proxy của bạn không nằm ở phần cứng hoặc phần mềm nhưng giả lập được phần cứng ở layer 2.

Còn việc bạn chỉ làm việc trên 1 layer Application mà thôi, trên ubuntu của bạn sử dụng công cụ iptables hoặc ufw là 2 công cụ tường lửa thông dụng, cấu hình nó để nó tóm tất cả các luồng traffic đẩy vào proxy của bạn. Hoặc cách đơn giản hơn, thử như sau:

Mở file /etc/environment ra, thêm vào cuối file các dòng:

http_proxy="http://sờ-quít-của-tui:3128"
https_proxy="http://sờ-quít-của-tui:3128"
ftp_proxy="http://sờ-quít-của-tui:3128"
no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
HTTP_PROXY="http://sờ-quít-của-tui:3128"
HTTPS_PROXY="http://sờ-quít-của-tui:3128"
FTP_PROXY="http://sờ-quít-của-tui:3128"
NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"

Thay sờ-quit-của-tui bằng địa chỉ của bạn.

Nhớ logout ra vào lại hoặc reboot cho chắc ăn. Xong!

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?