如何在pycurl中连接到HTTPS代理(安全web代理)?

如何在pycurl中连接到HTTPS代理(安全web代理)?,curl,proxy,pycurl,Curl,Proxy,Pycurl,我正试图用pycurl连接到a。尝试设置适当的代理类型时,这些选项可用,它们对应于curl代理选项(括号中): 但是,还有一个curl选项名为CURLPROXY\u HTTPS,如中所述,它似乎不可用 对于plain curl,我使用以下命令连接到代理: curl --proxy https://proxy-host:proxy-port --proxy-insecure -U username:password https://target.com 一切都按预期进行。但不是pycurl 如何

我正试图用pycurl连接到a。尝试设置适当的代理类型时,这些选项可用,它们对应于curl代理选项(括号中):

但是,还有一个curl选项名为
CURLPROXY\u HTTPS
,如中所述,它似乎不可用

对于plain curl,我使用以下命令连接到代理:

curl --proxy https://proxy-host:proxy-port --proxy-insecure -U username:password https://target.com
一切都按预期进行。但不是pycurl

如何在pycurl中实现相同的行为?

在我了解pycurl github问题之后,我找到了CURLPROXY_HTTPS的选项代码,它是
2

我能够使用下一个代码通过pycurl的安全web代理发出请求:

导入pycurl
从io导入字节io
进口证书
def request_with_pycurl(用户名、密码、主机、端口、目标url=)https://api.ipify.org/'):
buffer=BytesIO()
c=pycurl.Curl()
c、 setopt(pycurl.CAINFO,certifi.where())
#设置代理不安全
c、 setopt(c.PROXY\u SSL\u VERIFYHOST,0)
c、 setopt(c.PROXY\u SSL\u VERIFYPEER,0)
#设置标题
c、 setopt(pycurl.USERAGENT,'Mozilla/5.0(WindowsNT6.1;WOW64;rv:8.0)Gecko/20100101 Firefox/8.0')
#设置代理
c、 setopt(pycurl.PROXY,f“https://{host}:{port}”)
#代理身份验证
c、 setopt(pycurl.PROXYUSERPWD,f“{username}:{password}”)
#设置代理类型=“HTTPS”
c、 setopt(pycurl.PROXYTYPE,2)
#目标url
c、 setopt(c.URL,target_URL)
c、 setopt(c.WRITEDATA,缓冲区)
c、 执行
c、 关闭()
body=buffer.getvalue()
返回体
response=请求带有_pycurl(“代理_用户名”、“代理_密码”、“代理_主机”、“代理_端口”)。decode()
打印(答复)

其他人来找crawlera proxy或没有密码的proxy如果上述答案不起作用,我已经更新了答案

curl --proxy https://proxy-host:proxy-port --proxy-insecure -U username:password https://target.com
def request_with_pycurl(username, password, host, port, target_url='http://api.ipify.org/'):
    buffer = BytesIO()
    c = pycurl.Curl()

    c.setopt(pycurl.CAINFO, certifi.where())

    # set proxy-insecure
    c.setopt(c.PROXY_SSL_VERIFYHOST, 0)
    c.setopt(c.PROXY_SSL_VERIFYPEER, 0)

    # set headers
    c.setopt(pycurl.USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0')

    # set proxy
    c.setopt(pycurl.PROXY, f"http://{host}:{port}")

    # proxy auth
    c.setopt(pycurl.PROXYUSERNAME, username)

    # set proxy type = "HTTPS"
    #c.setopt(pycurl.PROXYTYPE, 2)

    # target url
    c.setopt(c.URL, target_url)

    c.setopt(c.WRITEDATA, buffer)
    c.perform()
    c.close()

    body = buffer.getvalue()
    return body


response = request_with_pycurl("KEY:", "", "HOST", "PORT").decode()

print(response)