Python的请求模块返回代理错误

时间:2019-06-05 09:22:07

标签: python-3.x python-requests

发送带有代理的发布请求,但继续遇到代理错误。

已经针对 [WinError 10061]在stackoverflow上尝试了多种解决方案,因为目标计算机主动拒绝了它,因此无法建立连接。

尝试更改系统设置,验​​证远程服务器是否存在并正在运行,并且系统中也未设置HTTP_PROXY环境变量。

import requests

proxy = {IP_ADDRESS:PORT}  #proxy
proxy = {'https': 'https://' + proxy}

#standard header
header={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Referer": "https://tres-bien.com/adidas-yeezy-boost-350-v2-black-fu9006-fw19",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "en-GB,en-US;q=0.9,en;q=0.8"
}

#payload to be posted
payload = {
      "form_key":"1UGlG3F69LytBaMF",
      "sku":"adi-fw19-003",
      # above two values are dynamically populating the field; hardcoded the value here to help you replicate.
      "fullname": "myname",
      "email": "myemail@gmail.com",
      "address": "myaddress",
      "zipcode": "areacode",
      "city": "mycity" ,
      "country": "mycountry",
      "phone": "myphonenumber",
      "Size_raffle":"US_11"
}

r = requests.post(url, proxies=proxy, headers=header, verify=False, json=payload)

print(r.status_code)

预期输出:200,以及发送到我的电子邮件地址的电子邮件验证。

实际输出:requests.exceptions.ProxyError:HTTPSConnectionPool(主机=“ tres-bien.com”,端口= 443):URL超过了最大重试次数:/ adidas-yeezy-boost-350-v2-black-fu9006- fw19(由ProxyError('无法连接到代理。',NewConnectionError(':未能建立新的连接:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了它,')))

1 个答案:

答案 0 :(得分:0)

这里有些事情是错误的...(查看了您要发布到的抽奖页面后,根据您发布的异常,我怀疑它是https://tres-bien.com/adidas-yeezy-boost-350-v2-black-fu9006-fw19)。

1)我不确定将proxy作为字典而不是字符串的第一个定义是怎么回事。就是说,同时使用http和https代理可能是一个好习惯。如果您的代理可以支持https,那么它应该可以支持http。

proxy = {
    'http': 'http://{}:{}'.format(IP_ADDRESS, PORT),
    'https': 'https://{}:{}'.format(IP_ADDRESS, PORT)
}

2)第二个问题是您要提交给的抽奖活动采用url编码的表单数据,而不是json。因此,您的请求应采用以下结构:

r = requests.post(
    url=url, 
    headers=headers,
    data=payload
)

3)该页面存在一个ReCaptcha,这是您的表单有效载荷中所缺少的。这不是为什么您的请求出现连接错误的原因,但是您不会成功提交具有ReCaptcha字段且没有适当令牌的表单。

4)最后,我怀疑您的ProxyError的根源是您尝试发布到错误的url。查看Chrome Inspector,您应该将此数据提交至 https://tres-bien.com/tbscatalog/manage/rafflepost/,而您的异常输出表明您正在发布到https://tres-bien.com/adidas-yeezy-boost-350-v2-black-fu9006-fw19

祝你好运。