Selenium访问券商站点报net::ERR_NAME_NOT_RESOLVED如何彻底修复
问题根因定位
你遇到的net::ERR_NAME_NOT_RESOLVED是Chrome访问券商站点时DNS域名解析失败导致的,偶发出现说明不是永久性配置错误,和你群晖NAS、Docker运行环境的网络波动、DNS节点不稳定强相关。
彻底修复方案
1 从根本上解决DNS解析异常
- 替换群晖系统默认DNS:不要使用运营商默认DNS,改为公共稳定DNS,比如阿里公共DNS 223.5.5.5/223.6.6.6、谷歌公共DNS 8.8.8.8,同步在Docker daemon配置中设置相同的DNS,避免容器继承到不可用的DNS节点。
- 绑定本地hosts绕开公共DNS解析:在群晖宿主机的
/etc/hosts文件中添加一行[券商站点实际IP] www.stockbroking.com.my,也可以在启动selenium容器时添加--add-host www.stockbroking.com.my:对应IP参数,直接给容器写入hosts规则,完全规避公共DNS解析波动的影响。
2 优化自动化逻辑兜底
- 细化重试规则:不要对所有WebDriverException做无差别重试,单独匹配
net::ERR_NAME_NOT_RESOLVED报错类型,重试前添加1~2秒延迟,重试次数设置为5次以上,每次重试前可先调用socket库做一次域名解析预检查,确认解析正常后再调用driver.get方法。 - 增加任务前置校验:每日定时任务触发、启动selenium容器之前,先在宿主机执行域名解析校验,解析失败就延迟30秒后重试,确认网络、DNS正常后再启动Kenbot执行下单逻辑。
3 规避环境隐性问题
- 固定selenium镜像版本:不要使用
selenium/standalone-chrome:latest标签,该标签会自动拉取最新版本镜像,可能出现镜像迭代后DNS相关配置变更的问题,固定为已验证稳定的对应Chrome 94版本的镜像tag,避免镜像自动更新带来的未知故障。 - 添加网络日志排查根因:在群晖计划任务中添加定时脚本,早市开盘前1小时开始每5分钟记录一次DNS解析结果、网络连通性日志,后续再出现报错时可通过对应日志确认是本地网络波动、运营商DNS故障还是券商端DNS配置临时异常。
内容的提问来源于stack exchange,提问作者mrkgoh
相关产品推荐
相关产品推荐

