如何解决Python requests.get访问https://www.kms.or.kr的ConnectionError问题
解决请求https://www.kms.or.kr时出现的ConnectionError问题
开发数学术语词典项目时,用以下代码请求韩国数学学会官网:
import requests URL = 'https://www.kms.or.kr' response = requests.get(URL) print(response)
终端返回requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))错误,但将URL替换为https://www.google.com/时代码可正常运行。
问题原因
目标网站启用了基础反爬机制,会检测请求的User-Agent头——默认情况下requests发送的请求没有携带浏览器标识,被网站判定为非人类访问,直接断开连接。
解决方案
给请求添加模拟浏览器的请求头,让服务器认为是正常浏览器访问:
import requests URL = 'https://www.kms.or.kr' # 模拟Chrome浏览器的请求头,可根据自己浏览器的实际UA替换 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' } try: response = requests.get(URL, headers=headers) # 先检查响应状态码,确认请求成功 print(f"响应状态码: {response.status_code}") # 如需查看页面内容,可取消下面的注释 # print(response.text[:500]) except requests.exceptions.RequestException as e: print(f"请求出错: {e}")
额外建议
- 如果还是出现错误,可以尝试添加更多请求头字段(比如
Accept-Language、Referer等),完全模拟浏览器的请求头 - 给请求设置合理的超时时间,避免长时间等待:
requests.get(URL, headers=headers, timeout=10) - 若网站有更严格的反爬,可能需要引入
requests.Session维持会话,或者添加随机延迟
内容的提问来源于stack exchange,提问作者LEE
相关产品推荐
相关产品推荐

