VPS部署验证码求解程序遇twocaptcha.NetworkException问题求助
问题分析与解决方案
你的验证码求解程序本地运行正常,但部署到VPS后调用solver.get_result(id)时触发twocaptcha.solver.NetworkException,结合已排查的信息,从以下方向解决:
1. 移除冗余的验证码提交逻辑
代码中重复调用了solver.normal()和solver.send(),这属于冗余操作,还可能引发VPS上的网络请求冲突。normal方法已封装提交验证码+轮询获取结果的完整流程,无需手动调用send和get_result。
修正后的代码片段:
print('Rozwiązuję captchę') # 初始化时增加超时与轮询配置,适配VPS网络延迟 solver = TwoCaptcha('api_key', timeout=60, pollingInterval=5) # 直接通过normal方法获取验证码结果 captcha_solve = solver.normal("captcha.png") code = captcha_solve['code'] print("Captcha rozwiązana")
2. 排查VPS到2Captcha API的网络连通性
NetworkException本质是VPS无法与2Captcha的API服务器建立有效连接,即使能下载网页图片,也不代表能访问2Captcha的域名:
- 在VPS执行ping测试:
ping api.2captcha.com,检查域名解析与连通性 - 用curl测试API可用性(替换你的密钥):
若返回类似curl "https://api.2captcha.com/getbalance?key=你的API密钥"{"status":1,"request":"123.45"}的结果,说明网络正常;否则需排查:- VPS防火墙是否开放HTTPS(443端口)的出站请求
- 运营商是否拦截了2Captcha的API域名
- 若VPS使用代理,需在初始化TwoCaptcha时配置:
solver = TwoCaptcha('api_key', proxy={ 'type': 'http', # 或socks5,根据代理类型调整 'uri': 'http://proxy_ip:proxy_port' })
3. 优化TwoCaptcha的超时与重试配置
VPS网络延迟通常高于本地,默认超时设置可能不足以完成请求,初始化时调整参数:
solver = TwoCaptcha('api_key', timeout=60, pollingInterval=5)
timeout:单次请求的超时时间(单位:秒)pollingInterval:轮询结果的间隔时间(单位:秒)
4. 替换不稳定的绝对XPATH
绝对XPATH依赖页面结构,页面更新后易失效,建议改用相对选择器。例如:
- 原cookie按钮的绝对XPATH:
cookie_button = driver.find_element(By.XPATH, "/html/body/div/div[2]/div[1]/div[2]/div[2]/button[1]/p") - 可改为相对CSS选择器(需根据页面实际属性调整):
cookie_button = driver.find_element(By.CSS_SELECTOR, "button:nth-of-type(1) > p")
内容的提问来源于stack exchange,提问作者Heniu
相关产品推荐
相关产品推荐

