Cypress调用cy.visit()访问www.github.com报ESOCKETTIMEDOUT其他网站正常
Cypress 访问 GitHub 触发 ESOCKETTIMEDOUT 错误排查方案
1. 网络层面排查
- 先在本地浏览器直接访问 http://www.github.com,同时在终端执行
curl -I http://www.github.com确认请求是否能正常响应,优先排除本地网络到 GitHub 的连通性故障 - 检查本地是否开启了代理工具,Cypress 默认会读取系统代理配置,若代理对 GitHub 域名的转发规则异常会直接导致超时,可临时关闭代理后重新执行测试验证
- 若你的网络环境必须走代理才能访问 GitHub,需要在 Cypress 配置文件中显式声明代理参数,不要依赖系统默认代理读取逻辑,避免配置丢失
2. Cypress 配置调整
- 拉长
cy.visit()的超时阈值,GitHub 首次加载静态资源较多,默认的超时时间可能不足以完成加载,修改调用代码为cy.visit('http://www.github.com', {timeout: 120000}),将超时时间调整为 120 秒测试 - 关闭非必要的页面加载校验,若不需要等待所有资源加载、动画执行完成,可添加额外配置:
cy.visit('http://www.github.com', {pageLoadTimeout: 120000, waitForAnimations: false}) - 检查
cypress.config.js配置文件,确认没有针对 github.com 域名的异常 hosts 绑定、请求拦截规则,避免请求被转发到不可达的IP地址
3. 站点反爬机制适配
- GitHub 有请求频率限流规则,若短时间内多次调用
cy.visit()发起访问,会触发安全机制主动断开连接,可在每次访问前添加cy.wait(3000)等待3秒,降低请求频率 - 配置 Cypress 的 User-Agent 标识为你本地常用浏览器的UA,避免 Cypress 默认的UA被 GitHub 反爬机制识别拦截
- 若开启了 Cypress 的全局请求拦截功能,确认没有对 GitHub 相关的请求做异常篡改、阻塞操作,导致请求无法正常到达服务端
内容的提问来源于stack exchange,提问作者Volodymyr Pliuta
相关产品推荐
相关产品推荐

