walkor/php-socks5

使用SwitchyOmega和FireFox测试socks5 user/pass认证总是无法连接

Opened this issue · 4 comments

系统:Mac os 10.14
火狐浏览器:65.0.1
火狐插件:SwitchyOmega
问题描述:若无user/pass验证,则成功实现代理,若开启验证模式,则代理失败。

问题1:火狐浏览器支持socks5账号密码认证模式, php-socks5返回客户端不支持,解读socks5协议

版本号(1字节) | 可供选认证方法(1字节) | 选择的方法(1~255字节)。
认证方法应该为$buffer[2+], 程序中为$buffer[3+],所以没有读取正确的methods list。

问题2:修复上述问题1后,php-socks5收到了正确的user和password,但是还是代理还是失败。客户端除了尝试ff浏览器还尝试了phantomJS的代理模式,同样都是失败。

请大家帮忙看看,问题出在哪里呢?谢谢

奇了怪了,
curl http://www.baidu.com --socks5 127.0.0.1:1081 --proxy-user changme:1234 是可以的。

找到问题了,客户端发送账号和密码的消息中,Version并不是5,而是1,同时服务端校验完毕后,也要返回1,例如 \x01\x00 或者 \x01\xff。
curl能用,有可能是它不对服务端返回的version做校验。
重新查看了socks5协议文档,在发送账号和密码的环节,version为鉴定协议并非socks5版本5协议,所以返回校验结果的verison也为鉴定协议

可以分享下修改的部分吗,谢谢

可以分享下修改的部分吗,谢谢

按照我上述的描述修改即可