微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取标题并发布它们请求PYTHON

如何解决获取标题并发布它们请求PYTHON

我正在尝试获取响应标头并将它们发布到一个 post.requests 到另一个 url。 有时,即使没有标题,帖子请求也会通过,但是在尝试了 2/3 次之后我得到:403 禁止状态,所以我试图从第一个 URL 复制标题获取并发布到第二个 URL post.requests

import requests

url = "https://www.converse.com/it/it/regular/chuck-70-classic-high-top/162050MP.html"
r = requests.get(url)
h = r.headers

cookie = r.cookies
print(r.status_code)
# print(cookie)
print(h)

# ------------------HEADERS

headers2 = {
    'accept': '*/*','accept-encoding': 'gzip,deflate,br','accept-language': 'it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7','cache-control': 'max-age=0','content-type': 'application/x-www-form-urlencoded; charset=UTF-8','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) '
                  'Chrome/89.0.4389.90 Safari/537.36','x-requested-with': 'XMLHttpRequest','authority': 'www.converse.com','referer': 'https://www.converse.com/it/it/regular/patchwork-chuck-70-high-top/170059C_100.html'
}

params = {
    'Quantity': '1','cartAction': 'add','pid': '162050C_095'
}

url2 = 'https://www.converse.com/on/demandware.store/Sites-converse-it-Site/it_IT/Cart-AddProduct?format=ajax'
r2 = requests.post(url2,params=params,headers=h)
print(r2.status_code)

但我明白了:

"C:\desktop\TRU CLI\Scripts\python.exe" C:/Users/matti/PycharmProjects/TroughCLI/getcookie.py
200
{'Server': 'Nginx','Content-Type': 'text/html;charset=UTF-8','Accept-Ranges': 'bytes','X-Content-Type-Options': 'nosniff','x-dw-request-base-id': 'qJAHbWx_XGABAAB_','X-XSS-Protection': '1;mode=block','x-frame-options': 'SAMEORIGIN','Cache-Control': 'no-cache,no-store,must-revalidate','Pragma': 'no-cache','Expires': 'Thu,01 Dec 1994 16:00:00 GMT','content-encoding': 'gzip','X-EdgeConnect-MidMile-RTT': '0','X-EdgeConnect-Origin-MEX-Latency': '111','X-Akamai-Transformed': '9 55032 0 pmb=mTOE,3mRUM,1','Date': 'Thu,25 Mar 2021 13:13:30 GMT','transfer-encoding': 'chunked','Connection': 'keep-alive,transfer-encoding','vary': 'Accept-Encoding','Set-Cookie': 'dwac_bct3kiaagPLxsaaadoJd2KwfeA=DjdxDy6ljLQ_EZkAk0kI5JGW93e6s3SsSdA%3D|dw-only|||EUR|false|Etc%2FUTC|true; Path=/,cqcid=bcUh1usyRxPrmfp0IB9awzkFo2; Path=/,cquid=||; Path=/,sid=DjdxDy6ljLQ_EZkAk0kI5JGW93e6s3SsSdA; Path=/,dwanonymous_27bd3e9f26f09719a59d7ae14286db28=bcUh1usyRxPrmfp0IB9awzkFo2; Version=1; Comment="Demandware anonymous cookie for site Sites-converse-it-Site"; Max-Age=15552000; Expires=Tue,21-Sep-2021 13:13:30 GMT; Path=/,dwsecuretoken_27bd3e9f26f09719a59d7ae14286db28=WcNWWzVMhooYN8kMQZ6tu0PRDU4OdaORSg==; Version=1; Comment="Demandware Secure Token for site Sites-converse-it-Site"; Path=/; Secure; HttpOnly; SameSite=None,__cq_dnt=0; Path=/,dw_dnt=0; Path=/,dwsid=0iLvYSw3EP1G0Z2bi-cG4k2DaRm4IejlMBAG7uDQPinKLIfyEd2l7pTPzMAep00rUCgUAgWL9VSK-VHgLd_lYw==; path=/; HttpOnly,geoloc=cc=IT,rc=,tp=vhigh,tz=GMT+1,la=45.47,lo=9.20; path=/; domain=.www.converse.com,ak_bmsc=624C12013F6830AC885D5AA58C1633AA5C7B651F9F6B00007A8C5C60D65B7D07~plq7bPSVPWBJk2IRTM16allbgUtC0v4hQvJL54zHO74Bj0D0pMZTc4qw2DoqKhtKXbMp9oPpeU1v5ykZZfxkbAdbCd0lrsG2GoTSWmJC7C/tQptOQCJpOhH7XzMSp0pkq7B03y88p5uPxDL9h96FTGNe62LqRS5zV+s2C+3hz+7/HakkT4J51/7prlF3hHQxCT09a8mBZ6cNJ7z6EMc5YgAeI0tY+HCAJDExyJt5ZYMGg=; expires=Thu,25 Mar 2021 15:13:30 GMT; max-age=7200; path=/; domain=.converse.com; HttpOnly,bm_mi=C495B18776479A3854F3982974B3A080~CpTU3LRpsOcEy73TKNapYJ+M+RBQ8/tT5uP82EWh+6bme/R4dq13737wYoqcVnMaE16qpaN4l31g4xcdEw4U/uTQUQR4c1tjUX2NGgMSBrAIqDSfIMiM/UVrrMMjU1w+DzeHUtxgWB+WVAqz1d35NXnnQQzQCl8vrQdgtNQMXWqXcxvESIbKlV1xOfBf/goaEy7s9142cOlLbbxRGsY41S51FdwoswLt8vbFweK6XL5VE6P4YJwE0SBpZkC5aLbdhsVcx45DXkUGz+6wTEl74nE/6bBue5kuvV0rDK5NzMQ=; Domain=.converse.com; Path=/; Max-Age=0; HttpOnly,bm_sz=40091001B2DEBA22B9752A4692B3D263~YAAQH2V7XHaWfz54AQAAyb2EaQuYE4fKBasvygztJSuulpj+vE7xpTV3pZEh4yKogn7jArFisEQpnpw88UVWm8tMnu75iF2BXejc0fnk0eNhCgcJpwcD9VPlztJc2MpHJkvD0XGtTxJ9celZlzLNP63GJi6ZQsl8M+OukajSRd1Ozia4b3eS1dscK7x6p8CH0LyNUmIK7YplWY6xW/dM5qOYdC4+sWgwlhDqQqsGVtIlDaJeVSoT1d9/aNSFtWZRrXXWRvpH8mzbDY8yx+cR; Domain=.converse.com; Path=/; Expires=Thu,25 Mar 2021 17:13:30 GMT; Max-Age=14400; HttpOnly,_abck=CF9636A9B1E7DB7898C4613BD1EE636F~-1~YAAQH2V7XHeWfz54AQAAyb2EaQVdoeui6s5GBC3wWZNOtwgdqj5CVkTvpXc3OB9+vTI5h1W8XClJfTbCGbntDQzWAQiKbUjB7LclXM5xZiAfPHVKACZgnfgNPMOM34GPKhq/bHe6Jw5QyDwyhweJG9MRYPuY5CmM96AI/JvyWOvsHCod/Skc2Feq7Izsq7W3q69/dfDFbCfacaheh2FN8WrH0i87A4uYSSKeK/7e1RjhRPeUz9MjBHfAMbormyUyre07vlaFSG4KD8ZJIiIY8tidCcGdw3tNNkg4pwnaqj/XvfrmlWiJrQlUVn0rlM2BNRVZJOPBOqoTZ0ySCsEGlQswB3JTsg==~-1~-1~-1; Domain=.converse.com; Path=/; Expires=Fri,26 Mar 2021 13:13:30 GMT; Max-Age=86400; Secure','server-timing': 'cdn-cache; desc=HIT,edge; dur=139'}
Traceback (most recent call last):
  File "C:\desktop\TRU CLI\lib\site-packages\urllib3\connectionpool.py",line 699,in urlopen
    httplib_response = self._make_request(
  File "C:\desktop\TRU CLI\lib\site-packages\urllib3\connectionpool.py",line 445,in _make_request
    six.raise_from(e,None)
  File "<string>",line 3,in raise_from
  File "C:\desktop\TRU CLI\lib\site-packages\urllib3\connectionpool.py",line 440,in _make_request
    httplib_response = conn.getresponse()
  File "C:\Users\matti\AppData\Local\Programs\Python\python39\lib\http\client.py",line 1347,in getresponse
    response.begin()
  File "C:\Users\matti\AppData\Local\Programs\Python\python39\lib\http\client.py",line 307,in begin
    version,status,reason = self._read_status()
  File "C:\Users\matti\AppData\Local\Programs\Python\python39\lib\http\client.py",line 295,in _read_status
    raise BadStatusLine(line)
http.client.BadStatusLine: HTTP/1.1   0 Init


During handling of the above exception,another exception occurred:

Traceback (most recent call last):
  File "C:\desktop\TRU CLI\lib\site-packages\requests\adapters.py",line 439,in send
    resp = conn.urlopen(
  File "C:\desktop\TRU CLI\lib\site-packages\urllib3\connectionpool.py",line 755,in urlopen
    retries = retries.increment(
  File "C:\desktop\TRU CLI\lib\site-packages\urllib3\util\retry.py",line 532,in increment
    raise six.reraise(type(error),error,_stacktrace)
  File "C:\desktop\TRU CLI\lib\site-packages\urllib3\packages\six.py",line 734,in reraise
    raise value.with_traceback(tb)
  File "C:\desktop\TRU CLI\lib\site-packages\urllib3\connectionpool.py",in _read_status
    raise BadStatusLine(line)
urllib3.exceptions.ProtocolError: ('Connection aborted.',BadStatusLine('HTTP/1.1   0 Init\r\n'))

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
  File "C:\Users\matti\PycharmProjects\TroughCLI\getcookie.py",line 34,in <module>
    r2 = requests.post(url2,headers=h)
  File "C:\desktop\TRU CLI\lib\site-packages\requests\api.py",line 119,in post
    return request('post',url,data=data,json=json,**kwargs)
  File "C:\desktop\TRU CLI\lib\site-packages\requests\api.py",line 61,in request
    return session.request(method=method,url=url,**kwargs)
  File "C:\desktop\TRU CLI\lib\site-packages\requests\sessions.py",line 542,in request
    resp = self.send(prep,**send_kwargs)
  File "C:\desktop\TRU CLI\lib\site-packages\requests\sessions.py",line 655,in send
    r = adapter.send(request,**kwargs)
  File "C:\desktop\TRU CLI\lib\site-packages\requests\adapters.py",line 498,in send
    raise ConnectionError(err,request=request)
requests.exceptions.ConnectionError: ('Connection aborted.',BadStatusLine('HTTP/1.1   0 Init\r\n'))

Process finished with exit code 1
enter code here

我该如何解决这个问题?

解决方法

如果您的请求前 2/3 次都通过了,这意味着服务器正在接受您的请求。

由于 Converse 是一个运动鞋网站(带有需求软件),因此它具有反机器人功能,可以阻止脚本在他们丢弃运动鞋时试图向其服务器发送垃圾邮件(例如他们即将丢弃的 OW 匡威)

我的猜测是,您只是暂时受到网站的速率限制/阻止。尝试设置延迟 (time.sleep()) 或使用代理,看看会发生什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。