HTTP错误302无限循环错误,即使可以在Chrome中访问

问题描述

我正在尝试使用urllib.request访问链接,但显示此错误

Traceback (most recent call last):
  File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py",line 31,in <module>
    start(fakepyfile,mainpyfile)
  File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py",line 30,in start
    exec(open(mainpyfile).read(),__main__.__dict__)
  File "<string>",line 7,in <module>
  File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/urllib/request.py",line 222,in urlopen    return opener.open(url,data,timeout)
  File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/urllib/request.py",line 531,in open
    response = meth(req,response)
  File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/urllib/request.py",line 640,in http_response
    response = self.parent.error(
  File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/urllib/request.py",line 563,in error
    result = self._call_chain(*args)
  File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/urllib/request.py",line 502,in _call_chain
    result = func(*args)
  File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/urllib/request.py",line 755,in http_error_302
    return self.parent.open(new,timeout=req.timeout)
  File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.8/urllib/request.py",line 744,in http_error_302
    raise HTTPError(req.full_url,code,urllib.error.HTTPError: HTTP Error 302: The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
Found

我尝试了很多方法,但是无法访问它,但是在chrome中打开时,它仍然可以正常工作。

供参考的代码是-

import urllib.request

url="###"
webUrl  = urllib.request.urlopen(url)   
data = webUrl.read()        
print(data)

我尝试使用cookie方法,但仍然不起作用:'(

P.S,如果可以的话,请为这个问题建议一个“不是那么可恶的网站”

解决方法

好的,这似乎是因为应该返回重定向列表的302错误返回了一个空列表。我认为这是阻止脚本访问的不寻常尝试。您可以在会话中使用user-agent字符串来模仿浏览器。我正在使用请求模块,因为它更容易

import requests as req

url = "###"

session = req.Session()
session.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/74.0.3729.169 Safari/537.36'})

r = session.get(###)
print(r.status_code)
print(r.content)

您可以使用此脚本看到空白的302响应

import requests as req

r = req.get(###,allow_redirects=False)
print(r.status_code)
print(r.url)
print(r.history)

使用session.close()

完成操作后,请不要忘记关闭tcp连接

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...