walkor / php-socks5

socks5 proxy written in PHP based on workerman.
212 stars 106 forks source link

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

Open RainUUU opened 5 years ago

RainUUU commented 5 years ago

系统: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的代理模式,同样都是失败。

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

RainUUU commented 5 years ago

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

RainUUU commented 5 years ago

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

laikee99 commented 5 years ago

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

RainUUU commented 5 years ago

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

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