Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
RainUUU opened this issue Feb 26, 2019 · 4 comments

Comments

@RainUUU
Copy link

RainUUU commented Feb 26, 2019

系统: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
Copy link
Author

RainUUU commented Feb 26, 2019

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

@RainUUU
Copy link
Author

RainUUU commented Feb 26, 2019

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

@laikee99
Copy link

laikee99 commented Apr 1, 2019

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

@RainUUU
Copy link
Author

RainUUU commented Apr 2, 2019

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants