2013-01-18 46 views
8

Đã vài ngày kể từ khi tôi bắt đầu tìm kiếm giải pháp cho việc này.Yêu cầu Python Vấn đề SSL

Tôi đã cố gắng sử dụng các yêu cầu để thực hiện yêu cầu https thông qua proxy không có may mắn.

Altough này được bao gồm trong một dự án lớn của tôi, tất cả nắm được thực hiện như sau:

import requests 

    prox = 'xxx.xxx.xxx.xxx:xxx' # fill in valid proxy 

    r = requests.get('https://ipdb.at', proxies={'http': prox, 
               'https': prox}) 

Tôi đã thử các kward xác minh = False nhưng tôi tiếp tục nhận được lỗi tương tự hoặc một biến thể của nó:

Traceback (most recent call last): 
     File "/Users/mg/Desktop/proxy_service.py", line 21, in <module> 
     verify=False) 
     File "/Library/Python/2.7/site-packages/requests/api.py", line 55, in get 
     return request('get', url, **kwargs) 
     File "/Library/Python/2.7/site-packages/requests/api.py", line 44, in request 
     return session.request(method=method, url=url, **kwargs) 
     File "/Library/Python/2.7/site-packages/requests/sessions.py", line 279, in request 
     resp = self.send(prep, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies) 
     File "/Library/Python/2.7/site-packages/requests/sessions.py", line 374, in send 
     r = adapter.send(request, **kwargs) 
     File "/Library/Python/2.7/site-packages/requests/adapters.py", line 213, in send 
     raise SSLError(e) 
    requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol 
    [Finished in 20.4s with exit code 1] 

Tôi đang sử dụng phiên bản mới nhất của yêu cầu và mở khóa và 2.7.3 cho python. Tôi đã thử nghiệm nó trên sư tử núi mac 10.8.2 và cũng trên cửa sổ bảy.

Tôi đã giải quyết vấn đề này, thấy những người khác có vấn đề tương tự. Tôi đã tìm thấy các yêu cầu kéo liên quan đến các yêu cầu của thư viện và urllib3, cũng đã thấy thông tin về việc này là một sự thực thi không đúng của động từ kết nối http. Tôi tìm thấy một sửa chữa để sử dụng một adapter tùy chỉnh (tôi không nhớ chính xác nhưng tôi nghĩ rằng đó là đúng hạn) để sử dụng một giao thức ssl tùy chỉnh. Đã thử tất cả, không ai giúp.

Vì vậy, tôi đang tìm thêm thông tin. Bạn có bất kỳ ý tưởng gì đang xảy ra không, tôi có thể sửa chữa nó, v.v.

Tất cả trợ giúp đều được chào đón và cảm ơn tất cả!

PS: Tôi đã thử một số proxy và tôi chắc chắn rằng đó không phải là vấn đề.

+0

Thậm chí một đầu mối? :) –

+0

Điều này có thể hữu ích: http://stackoverflow.com/questions/13463206/how-to-get-https-content-using-python-requests-through-tor-and-privoxy?rq=1 –

+0

Có vẻ như urllib3 đang gần hỗ trợ cho điều này: https://github.com/shazow/urllib3/pull/139. –

Trả lời

14

Tôi đã có cùng một vấn đề này nhưng khi cố gắng sử dụng oauth2client (thư viện Google để sử dụng oauth2 dựa vào API của họ). Sau một ngày faffing ("thử nghiệm"), tôi phát hiện ra rằng tôi đã biến env thiết lập như sau:

https_proxy=https://your-proxy:port 

Thay đổi này để

https_proxy=http://your-proxy:port 

hoàn toàn cố định các vấn đề đối với tôi. Có lẽ điều này có nghĩa là cái bắt tay ban đầu từ máy khách đến proxy hiện không được mã hóa, nhưng sau đó https phải truyền trực tiếp. Tôi không tin rằng proxy công ty của tôi đã được định cấu hình để nói https.

Lưu ý rằng tất cả các trình duyệt của tôi đều hoạt động tốt với cài đặt trước đó. Có lẽ họ âm thầm cố gắng thiết lập kết nối proxy qua http sau khi không sử dụng https.

Googling hiển thị các ví dụ về cài đặt https_proxy cho cả địa chỉ http hoặc https với cùng một thước đo. Tôi đoán nó phụ thuộc vào cách proxy được cấu hình.

Nút "sử dụng cho tất cả giao thức" trong cửa sổ bật lên cấu hình trình duyệt/hệ điều hành giúp dễ dàng vô tình sử dụng cài đặt tôi đã có.

Tuy nhiên, tôi không chắc liệu đó có phải là vấn đề của bạn hay không. Mã của bạn cho thấy rằng bạn đã sử dụng chính xác cùng một cài đặt proxy cho cả http và https.

Nhân tiện, đây là tất cả trên Ubuntu 12.04.1.

+0

Vui lòng ngừng đăng và xóa. Bạn sẽ có thể xem bài đăng đã xóa của mình để chỉnh sửa rồi xóa lại. –

+0

Điều này đã hiệu quả đối với tôi. Tôi không biết liệu điều này có thể mở rộng với bất kỳ loại proxy nào cho giao thức https không, nhưng nếu có, yêu cầu thư viện có thể tự phát hiện và khắc phục sự cố này –

Các vấn đề liên quan