手机上开启vpn软件走socks5全局代理,脚本提交http请求报错java.io.IOException:unexpected end of stream on Connection
回答
根据你描述的情况,出现 java.io.IOException: unexpected end of stream on Connection
错误可能是以下原因导致的:
1. 代理配置问题
- 显式设置代理:即使系统全局启用了 Socks5 代理,部分 HTTP 库(如 Hamibot 内置的
http
模块)可能需要手动设置代理参数。尝试在脚本中为 HTTP 请求显式指定代理:var res = http.request(url, { method: 'GET', // 替换为你的代理 IP 和端口 proxy: 'socks5://代理IP:端口', });
- 协议兼容性:某些 Socks5 代理可能对 HTTPS 支持不完善,可尝试改用 HTTP 目标地址(非加密链接)测试是否能连通。
2. 代理服务器不稳定
- 超时设置:增加超时时间(代理服务器可能响应较慢):
var res = http.request(url, { method: 'GET', timeout: 30000, // 30秒超时 });
- 更换代理:尝试临时关闭 VPN 或更换其他代理服务器,确认是否是当前代理的问题。
3. SSL/TLS 握手失败
- 如果目标地址是 HTTPS,代理可能导致 SSL 证书验证失败。可尝试关闭证书验证(不推荐长期使用):
var res = http.request(url, { method: 'GET', insecure: true, // 跳过 SSL 验证 });
4. 脚本兼容性
- 确认脚本代码符合 Rhino 引擎的规范(如避免使用 ES6 箭头函数)。
建议排查步骤:
- 关闭 VPN 代理,直接请求目标地址,确认脚本本身能否正常运行。
- 显式设置代理参数,确保请求经过代理。
- 简化请求:先用一个最简单的 HTTP 请求(如
http.get("http://baidu.com")
)测试代理是否生效。 - 如果问题依旧,尝试在电脑上用相同代理测试同一请求,确认是否是手机端环境问题。
如需进一步分析,请提供精简后的代码片段和代理类型(免费/付费、共享/独享)。
本回答由 AI 生成,内容仅供参考
0