账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    python request 连接一个收费HTTPS代理IP失败问题
    85
    0

    当我不使用HTTPS或者使用使用别家的HTTPS代理是,都能正常,但是唯独使用这家的HTTPS时发生握手失败问题

    proxies = {
        'http':"http://175.172.81.174:5324",
        'https':"http://175.172.81.174:5324",
    }
    import requests
    r = requests.get("https://weibo.com/signup/signup.php",proxies=proxies,verify=False)
    

    HTTPSConnectionPool(host='weibo.com', port=443): Max retries exceeded
    with url: /signup/signup.php (Caused by SSLError(SSLError(1, u'[SSL:
    UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:661)'),))

    当使用下面代码时,每次都能成功:

    from OpenSSL import SSL
    
    import socket
    proxies = {
        'http':"http://175.172.81.174:5324",
        'https':"http://175.172.81.174:5324",
    }
    headers = """GET https://weibo.com/signup/signup.php HTTP/1.1
    Host: weibo.com
    Connection: keep-alive
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Referer: https://weibo.com/
    Accept-Language: zh-CN,zh;q=0.8\r\n\r\n
    """
    def verify_cb(conn, cert, errun, depth, ok):
            return True
    
    server = 'weibo.com'
    port = 443
    PROXY_ADDR = ("175.172.81.174", 5324)
    CONNECT = "CONNECT %s:%s HTTP/1.1\r\nConnection: close\r\n\r\n" % (server, port)
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(PROXY_ADDR)
    s.send(CONNECT)
    print s.recv(4096)      
    
    ctx = SSL.Context(SSL.TLSv1_METHOD)
    ctx.set_verify(SSL.VERIFY_PEER, verify_cb)
    ss = SSL.Connection(ctx, s)
    
    ss.set_connect_state()
    ss.do_handshake()
    cert = ss.get_peer_certificate()
    print cert.get_subject()
    ss.send(headers)
    print ss.recv(3000)
    ss.shutdown()
    ss.close()
    

    有办法让Requests正常使用这个代理IP吗,如果你愿意帮我测试,请提供给我你的IP,因为使用这个代理前需要授权

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 迊颩、榌舞 普通会员 1楼

      在Python中使用requests库进行HTTPS请求时,如果遇到连接一个收费HTTPS代理IP失败的问题,可以尝试以下几种解决方法:

      1. 检查代理IP的稳定性:有时候,代理IP的网络环境可能不稳定,导致请求无法成功。此时,可以尝试更换代理IP,或者增加代理IP的数量。

      2. 使用代理IP池:如果你有一个代理IP池,可以将请求放入池中,等待池中有可用的代理IP时再进行请求。这样可以减少因代理IP问题导致的请求失败。

      3. 使用代理库:Python有一个叫做requests代理库的库,可以方便地使用代理IP进行HTTP请求。可以尝试使用这个库进行请求。

      4. 检查网络环境:检查网络环境是否稳定,包括服务器的IP、端口、网络速度等。

      5. 使用第三方工具:如果以上方法都无法解决问题,可以尝试使用第三方工具进行诊断和优化,如fiddler、Wireshark等。

      在进行HTTP请求时,需要注意以下几点:

      1. 确保请求的URL是正确的,否则可能会引发错误。

      2. 使用正确的HTTP方法(如GET、POST、PUT等),例如使用POST方法发送表单数据。

      3. 对请求的头部和体进行正确的设置,例如设置请求头的Content-Type和Authorization等。

      4. 对请求的URL进行适当的编码,避免因编码问题导致的错误。

      5. 对请求进行错误处理,当请求失败时,可以进行适当的处理,例如打印错误信息等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部