Làm cách nào để sử dụng proxy SOCKS 4/5 với urllib2 để tải xuống một trang web?Làm cách nào để sử dụng proxy SOCKS 4/5 với urllib2?
Trả lời
Vì SOCKS là proxy cấp ổ cắm, bạn phải thay thế đối tượng ổ cắm được sử dụng bởi urllib2
. Vui lòng xem giải pháp this. Nếu bản vá khỉ không đủ tốt cho bạn, thì bạn có thể thử phân lớp hoặc sao chép-sửa đổi mã từ thư viện chuẩn urllib2
.
Thêm giải pháp thay thế cho câu trả lời của pan khi bạn cần sử dụng nhiều proxy khác nhau cùng một lúc.
Trong trường hợp đó, bạn cần tạo trình mở như bạn làm với proxy http. Có một mã có sẵn trong GitHub https://gist.github.com/869791
opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS4, 'localhost', 9999))
print opener.open('http://www.whatismyip.com/automation/n09230945.asp').read()
Hey, tôi đã sử dụng mã từ github. Thật không may, xác thực không hoạt động. Tôi đã nhập đúng tên người dùng và mật khẩu trong socksipyhandler.py, tuy nhiên, tôi gặp lỗi (3, 'tên người dùng không xác định hoặc mật khẩu không hợp lệ'). Tôi có thể xác nhận rằng mật khẩu tên người dùng của tôi hoạt động, vì lệnh cURL của tôi hoạt động với cùng thông tin xác thực. –
Nevermind, đã tìm ra vấn đề, có lỗi đánh máy trong socks.py =), btw, công việc tuyệt vời. Cảm ơn một tấn! –
liên quan cho Tor: http://stackoverflow.com/questions/1096379/how-to-make-urllib2-requests-through-tor-in-python –