2010-02-23 20 views

Trả lời

4

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.

20

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() 
+0

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. –

+0

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! –