Python requests请求clien.net本地正常 EC2报TooManyRedirects如何解决
问题根源
clien.net为韩国本土论坛,默认对非韩国IP的访问请求做了限制,会触发循环重定向逻辑,和代码版本、依赖环境、EC2基础网络没有关系。你的本地网络属于韩国IP段所以可以正常访问,EC2实例的公网IP不在韩国境内就会触发报错。
解决方案
方案1:更换EC2地域到韩国首尔区
重新创建AWS韩国(首尔)区域的EC2实例,分配韩国本土公网IP后重新运行代码即可正常访问,是成本最低的解决方式。方案2:配置韩国代理出口
如果必须使用当前区域的EC2,可以在请求中配置韩国地域的代理:
Python代码修改示例
import requests # 替换为你自己的韩国代理地址 proxies = { "http": "http://<代理IP>:<代理端口>", "https": "http://<代理IP>:<代理端口>" } # 添加模拟浏览器的请求头,避免被反爬额外拦截 headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5; rv:109.0) Gecko/20100101 Firefox/117.0", "Accept-Language": "ko-KR,ko;q=0.9,en;q=0.8" } url = "https://www.clien.net/service/group/clien_all?&od=T33" response = requests.get(url, proxies=proxies, headers=headers) html = response.text print(html)
curl测试命令
curl -x http://<代理IP>:<代理端口> -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5; rv:109.0) Gecko/20100101 Firefox/117.0" "https://www.clien.net/service/group/clien_all?&od=T33"
- 额外优化项
如果出现高频请求被限流的情况,可以在请求中加入时间间隔,或者自定义最大重定向次数:
import time # 每次请求间隔2秒 time.sleep(2) # 自定义最大重定向次数为50,仅当IP可正常访问时生效 response = requests.get(url, proxies=proxies, headers=headers, max_redirects=50)
内容的提问来源于stack exchange,提问作者Jeehoon Park
相关产品推荐
相关产品推荐

