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

2024-04-19 05:43:30 发布

您现在位置:Python中文网/ 问答频道 /正文

使用代理发送post请求,但始终遇到代理错误

已尝试了针对[WinError 10061]的stackoverflow的多个解决方案,无法建立连接,因为目标计算机主动拒绝连接

已尝试更改系统设置,验证远程服务器是否存在并正在运行,并且系统中未设置HTTP_代理环境变量

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(host='tres-bien.com',port=443):url超过最大重试次数:/adidas-yeezy-boost-350-v2-black-fu9006-fw19(由ProxyError('无法连接到代理')引起,NewConnectionError(':无法建立新连接:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了它',))


Tags: httpscom代理目标系统计算机postrequests
1条回答
网友
1楼 · 发布于 2024-04-19 05:43:30

这里有很多问题。。。(在查看您试图发布到的抽奖页面后,我怀疑它是https://tres-bien.com/adidas-yeezy-boost-350-v2-black-fu9006-fw19基于您发布的例外情况)

1)我不确定你第一次将proxy定义为dict而不是字符串是怎么回事。也就是说,同时使用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

祝你鞋子好运

相关问题 更多 >