2012-08-02 33 views
22

Mục đích của tôi là trích xuất html từ tất cả các liên kết trong trang đầu tiên sau khi nhập cụm từ tìm kiếm google. Tôi làm việc sau một proxy vì vậy đây là cách tiếp cận của tôi.Lỗi - Lỗi urlopen [Errno 8] _ssl.c: 504: EOF xảy ra vi phạm giao thức, cần giúp

1.I đầu tiên được sử dụng cơ giới hóa để nhập cụm từ tìm kiếm vào biểu mẫu, ive đặt proxy và robot chính xác.

2.Sau khi trích xuất các liên kết, Ive đã sử dụng một trình mở bằng cách sử dụng urllib2.ProxyHandler trên toàn cầu, để mở các url riêng lẻ.

Tuy nhiên điều này mang lại cho tôi lỗi này. Không thể hình dung ra.

urlopen error [Errno 8] _ssl.c:504: EOF occurred in violation of protocol 

Trả lời

4

Lỗi đã biết của nó, bao giờ một số giải pháp được đề cập trong phần nhận xét của liên kết này. Xem chúng, Có thể hữu ích cho bạn, bug url.

+0

Cảm ơn bạn, NIlesh. Tôi tìm thấy [this] (https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371/comments/9) là khá hữu ích, mặc dù thực tế rằng nó có thể không phải là giải pháp tốt nhất để chỉ từ bỏ TLS2. – cloudrave

21

Thay vì sao chép và chỉnh sửa mô-đun thư viện Python, bạn có thể vá lỗi ssl.wrap_socket() trong mô-đun ssl bằng cách ghi đè tham số từ khóa ssl_version. Các mã sau đây có thể được sử dụng như là. Đặt điều này vào đầu chương trình của bạn trước khi thực hiện bất kỳ yêu cầu nào.

import ssl 
from functools import wraps 
def sslwrap(func): 
    @wraps(func) 
    def bar(*args, **kw): 
     kw['ssl_version'] = ssl.PROTOCOL_TLSv1 
     return func(*args, **kw) 
    return bar 

ssl.wrap_socket = sslwrap(ssl.wrap_socket) 
+0

hi nó hoạt động như một say mê. Bạn có thể giải thích rằng mã này đang làm gì – thinkingmonster

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