Mac系统VS Code运行Python+bs4脚本触发ConnectionError异常
问题原因及解决方案
不存在站点专门拦截VS Code发起请求的情况,该报错是collider.com的反爬机制识别到非浏览器请求特征,主动断开连接导致的。两个运行环境表现不一致,通常是因为二者的网络配置、requests默认调用参数存在差异,比如CodeRunner运行时走了系统代理、或者预配置过请求头,而VS Code运行时直接发起了无伪装的裸请求。
修复方法
给请求添加模拟浏览器的请求头,伪装成正常浏览器访问即可,修改后的代码如下:
import requests from bs4 import BeautifulSoup as bs import time url = "https://collider.com" # 模拟Chrome浏览器的请求头 headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } page = requests.get(url, headers=headers, timeout=10) soup = bs(page.content, "html.parser") print(soup)
小提示:不建议使用
re作为requests库的别名,re是Python标准库正则表达式模块的通用别名,混用容易出现命名冲突。
其他排查方向
- 检查VS Code的运行环境是否开启了未适配的代理,异常代理IP也会触发站点反爬拦截
- 如果修改UA后仍报错,可以尝试添加Accept、Accept-Language等其他浏览器常规请求头,进一步降低被识别的概率
内容的提问来源于stack exchange,提问作者G.ijsco
相关产品推荐
相关产品推荐

