Pixelpanic / phpsocks5

Automatically exported from code.google.com/p/phpsocks5
0 stars 0 forks source link

FreeWebHostingArea测试成功,期待代理连接功能 #40

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
感谢写出支持socks5的好程序。
FreeWebHostingArea这个免费空间上测试成功。
phpsocks5确实给力,
其他用作代理的程序对PHP空间的要求很高一般。
就是少了通过代理服务器连接php空间的功能,期待中。。
因为能申请的PHP空间很多都被墙了,不支持代理难找到合适��
�,一般用户试了一个空间不成功估计就放弃了。
这样phpsocks5的通用性大打折扣。sockscap好像又不支持java程序��
�。
看到源码里有.cpp和.h,不知是否是有C的版本?那个应该支持s
ockscap。
个人认为项目里先加上个直接走socks代理的版本,就可以满足
绝大部分人的需求,口令,NTLM认证可以放到下一步。类似这�
��:

proxyHostName="127.0.0.1";

proxyPort="9050";

System.getProperty("socksProxySet",true);

System.getProperty("socksProxyHost",proxyHostName);

System.getProperty("socksProxyPort",proxyPort);

Original issue reported on code.google.com by zhag...@gmail.com on 18 Aug 2011 at 1:25

GoogleCodeExporter commented 8 years ago
呵呵,感谢你的建议。

实际上,在项目主页的预告中就有支持HTTP/socks5代理的功能(
还能支持NTLM认证),只不过最近其他事情有点多暂时还没有�
��成这一部分。

对了,有没有兴趣加入这个项目一起开发?

Original comment by lehui99 on 18 Aug 2011 at 4:27

GoogleCodeExporter commented 8 years ago
有心无力啊,没那个技术。
php表示完全不行,只能是看到优秀项目就来观望支持一下。
http://code.google.com/p/goagent/
话说goagent项目也开始在支持ntlm代理了。。

Original comment by zhag...@gmail.com on 19 Aug 2011 at 7:31

GoogleCodeExporter commented 8 years ago
其实支持代理功能只需要改Java客户端就可以了,不需要改php�
��

看你给出的代码应该和实际需要修改的代码差不多,不知道��
�会不会Java?

Original comment by lehui99 on 19 Aug 2011 at 10:08

GoogleCodeExporter commented 8 years ago
能看懂几行代码,多了就无力,不懂技术就是比较杯具啊。
运行时在java后面加上参数貌似就能走http代理了:
java -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8080

另外,不知是不是原理上是操作数据库的原因,
我这测试貌似phpsocks5很容易触动主机空间的保护机制似的,
好像用一会就不太稳定了,只能删除数据库的那几个表,重��
�建一次。
有可能是本机ip被拒绝连接。

Original comment by zhag...@gmail.com on 20 Aug 2011 at 1:29

GoogleCodeExporter commented 8 years ago
从1.5开始,http和https要分别设置代理,还要加上 
-Dhttps.proxyHost=localhost -Dhttps.proxyPort=8080

不稳定的时候,能否把log(客户端和服务器端的)发上来分��
�一下?

Original comment by lehui99 on 20 Aug 2011 at 6:08

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
    选择国内不被墙的网站baidu和ip123测试,顺利打开并看到ip123显示了php主机的IP,
之后如果再打开个有图片的如推特或者淘宝就不行了,再打��
�ip123已经打不开了。
    反复测了几次,基本就是开始成功一会,后来就会http返回码500或者502。
这时用我的ip已经无法浏览器访问我建的php空间首页了,挂上
一个国内代理又可以打开,说明不是被墙而只是拒绝我的ip访
问。
    而且这时用java -Dhttp.proxyHost挂代理,phpsocks5又可以使用。说明确实是ip被拒绝。
    或许是phpsocks5访问socks5.php过于频繁,或者操作数据库过于频繁吧。好像是触发了主机的保护机制然后被拒绝访问。选择付费空间估计能解决,但这样通用性大打折扣了。

Original comment by zhag...@gmail.com on 20 Aug 2011 at 1:01

Attachments:

GoogleCodeExporter commented 8 years ago
服务器的log

Original comment by zhag...@gmail.com on 20 Aug 2011 at 1:02

Attachments:

GoogleCodeExporter commented 8 years ago
另外测试时打了sp1补丁。。

Original comment by zhag...@gmail.com on 20 Aug 2011 at 1:15

GoogleCodeExporter commented 8 years ago
看了一下log,服务器500错很多都是因为不支持set_time_limit操作
。

因为socks5协议需要在一个TCP连接内持续读取数据直到连接关��
�,有时候这个TCP连接存在的时间会比较长(比如下载一个100M
B的文件,可能1个TCP连接要持续10 - 
20分钟,这样才能下载完成一个100MB的文件)。

但是,PHP默认规定一次HTTP请求30秒内没有结束,就会强制终��
�这次请求,这个限制可以通过调用set_time_limit进行更改。set_t
ime_limit(n)设置了在执行了set_time_limit后的n秒内不会强行终止��
�次HTTP请求(比如本次HTTP请求已经执行了15秒,调用set_time_lim
it(30)后还要经过30秒才会被强制终止,等于把强制终止的时间
推迟了15秒)。如果不断调用set_time_limit(n),那么可以不断延�
��本次HTTP请求被强制终止的时间,这样就可以延长HTTP请求被�
��制终止的时间。

然而,你的PHP空间禁止了调用set_time_limit,导致调用set_time_lim
it时出错。可以暂时去除调用set_time_limit的地方再次测试看看�
��会不会有问题。

可以在php文件中的第98行和第307行找到set_time_limit的调用,在9
8行和第307行的行首加上注释符(注释符为双斜杠://)使得��
�执行set_time_limit。改好PHP后重新上传到服务器上。

去除set_time_limit后,如果TCP连接超过30秒(比如下载大文件,�
��HTTP的长连接。HTTP的长连接通常被用于访问同一个域名下多�
��资源复用TCP连接)就会被强制断开连接。

Original comment by lehui99 on 20 Aug 2011 at 3:20

GoogleCodeExporter commented 8 years ago
    辗转测试了多次,也换了好几个空间。现在一一汇报下结果。
    前面用的免费空间realservers.info,不支持set_time_limit,
你上面讲的完全符合这个空间的情况,而且我访问.php建表的�
��候的确就提示了set_time_limit,但是因为建表成功,又能用,�
��忘了这个提示。现在一想的确是这样。
    但是还是有些难以判断是否是主要原因,去掉调用set_time_limit后有改善,但是开几个网页后还是被禁IP,挂代理情况依旧。
    这个主机有一个现象就是ftp连接有时都会停滞,比如在ftp删除一个文件,有时卡在那
这时立刻断开ftp连接,重连后马上恢复。
    而phpsocks5代理时我说的不稳定,就类似这样,网页是停滞的。
既打不开,也不报502 drop 
connection,而是在刷新似的。但是关掉phpsocks5重新打开,还是�
��样。
    发现服务器日志文件都似乎比较大,开几个网页就会产生4到6M。
在服务器上产生这样的日志会不会对主机服务器造成压力,��
�发它的保护机制什么的呢?
    虽然觉得不稳定问题完全在于这个空间的某些限制什么的,不过要是phpsocks5也能针对这类空间优化下连接什么的就好了,可以提高通用性。毕竟很难期待大部分用户有能力和耐心申请多个空间并部署测试。
    这是探针:http://zhagen2.realservers.info/phptanzhen.php.php
    从探针上看有一些禁用的函数。
    不过该空间测试似乎能够运行apjp。
    这是日志

Original comment by zhag...@gmail.com on 21 Aug 2011 at 4:48

Attachments:

GoogleCodeExporter commented 8 years ago
    还有一个空间,已经被墙,也类似上面,不过用探针查set_time_limit函数未被禁用,
日志也没有报这个warning。
    java -Dhttp.proxyHost挂代理开几个网页成功,后来打不开新的网页,
然后首页浏览器访问都会提示出错,提示Internal Server Error。
    用ftp还有一个现象,服务器日志phpsocks5_log似乎一直在产生,删掉了还有。有点奇怪。
    不过这也完全不具有普遍性,也可能只是空间个例。这个空间反馈基本可以忽略,仅供参考。

Original comment by zhag...@gmail.com on 21 Aug 2011 at 4:51

GoogleCodeExporter commented 8 years ago
    另外测试了这个空间Primegalactic.
    phpsocks5完美运行,日志也有很多返回码500,但确实正常运行,无论是用本地ip还是java -Dhttp.proxyHost挂代理都好用。    
    可以推荐给广大一般用户使用,
    希望这种免费空间能一直运营下去吧。日志有20M就不传了。 
    探针http://174.136.63.6/~zhagenco/phptanzhen.php.php    
    从探针上看没有禁用的函数,也不知能否总结出这类空间的规律。
    标题这个FreeWebHostingArea现在发现好像上传php探针就会被禁用账户,而且不是人工而是自动被禁用,很奇怪。不建议其他用户注册,也没有再用作测试。

Original comment by zhag...@gmail.com on 21 Aug 2011 at 4:56

GoogleCodeExporter commented 8 years ago
首先,服务器端的log文件是用来调试的,调试完成之后就可��
�把服务器端的log关掉,具体做法参考首页( 
https://code.google.com/p/phpsocks5/ )中的一句话:
建议在调试成功后手动将php中的debuginfo参数设置为False,并删
除服务器端的log文件。debuginfo参数的具体意义可以参考Wiki页�
��的parameter_list页。

apjp好像没有使用set_time_limit,所以下载大文件好像会有问题��
�

log文件我再看看,优化空间有一些,不过可能余地不大。

看了log后我再来反馈。

Original comment by lehui99 on 21 Aug 2011 at 5:18

GoogleCodeExporter commented 8 years ago
   下载大文件是会有问题,而且apjp和同类程序,似乎在代理调度转换端口时,
polipo,privoxy,3proxy,proxy 
switcher方式,其中总分别有一到几种方式是不支持的。
   realservers.info我再争取找几个国内国外代理挂上测下,整理下发一两个log上来供补充参考。

Original comment by zhag...@gmail.com on 21 Aug 2011 at 7:57

GoogleCodeExporter commented 8 years ago
分析了一下log,发现很多时候由于到达了mysql的最大连接数导
致php部分不能正常工作。http://zhagen2.realservers.info/phptanzhen.php.
php 这个空间的mysql最大连接数是多少?

由于php部分为了加快连接mysql,使用了mysql的持久连接mysql_pcon
nect,这样mysql连接一直不会释放,这样下一个http请求就可以�
��用上一个http请求的mysql连接而不必重新连接到mysql。不过这�
��也稍微加大了一些mysql的连接数。

尝试一下把php部分的mysql_pconnect改为mysql_connect(有很多地方��
�了mysql_pconnect,需要用文本编辑器查找替换一下,把所有mysql
_pconnect的地方替换为mysql_connect),再试试看还有没有问题?�
��后能否再帮忙上传一下服务器和客户端的log?谢谢!

Original comment by lehui99 on 21 Aug 2011 at 8:19

GoogleCodeExporter commented 8 years ago

mysql_pconnect改为mysql_connect明显稳定时间有加长,
但用一阵子仍然会被拒绝连接。

换了一个可以测试mysql数据库的探针测试
这个探针是完美运行空间的
http://174.136.63.6/~zhagenco/config8nm.php
MySQL数据库持续连接 支持
POST最大字节数      100M
 允许最大上传文件    150M

这个是不稳定空间上运行探针
http://zhagen2.realservers.info/config8nm.php
MySQL数据库持续连接 不支持
 POST最大字节数     2M
 允许最大上传文件    2M

MySQL最大连接数探针上面都显示无限,但估计有误,
付费主机貌似都有限制在50到500的样子。

这是log
(依次成功访问10来个网页之后被拒绝连接)

Original comment by zhag...@gmail.com on 21 Aug 2011 at 11:29

Attachments:

GoogleCodeExporter commented 8 years ago
这是另一次

Original comment by zhag...@gmail.com on 21 Aug 2011 at 11:30

Attachments:

GoogleCodeExporter commented 8 years ago
这是被拒绝连接后重启phpsocks5的这种情形的log。
基本是无连接

Original comment by zhag...@gmail.com on 21 Aug 2011 at 11:32

Attachments:

GoogleCodeExporter commented 8 years ago
看了一下xxx3.rar和xxx4.rar的log,发现xxx3中你是用本地的privoxy��
�理的java客户端?而且set_time_limit好像又打开了,又看到很多s
et_time_limit被禁止的错误。

还有就是发现mysql的最大连接数最后还是超过了,虽然超过的
时间比使用mysql_pconnect延后了。

最后就是发现似乎mysql超过了最大连接数之后,再去访问php的
话,服务器会直接关闭连接,连http头都不会返回。规律似乎�
��一旦超过了mysql的最大连接数,那么最近访问最多的那个IP��
�会被服务器列入黑名单禁止访问一段时间。

Original comment by lehui99 on 21 Aug 2011 at 12:01

GoogleCodeExporter commented 8 years ago
本地privoxy是为了把SSH代理转换为http类型,方便代理java客户��
�。
恰好跟phpsocks5里的polipo一样,:-D
因为此时本地IP被禁止。改的时候一不注意用了之前的老版本
所以set_time_limit又打开了。
重新关闭了set_time_limit现在。

Original comment by zhag...@gmail.com on 21 Aug 2011 at 1:10

Attachments:

GoogleCodeExporter commented 8 years ago
还是因为mysql超过了最大连接数。

而且这个mysql连接数已经没有优化的余地了,访问一个网页需
要有3个mysql链接。

如果不用mysql,又只能做到类似apjp那样,https就必须伪造证书
了。

Original comment by lehui99 on 21 Aug 2011 at 1:16

GoogleCodeExporter commented 8 years ago
恩,这个空间个例确实把mysql连接数限制得过于严格了,相信
这样吝啬的空间也不会很多,或许主机里什么地方可以修改��
�大连接数也不一定,不过目前还不太了解。免费空间不少,�
��武之地很多。真是了解了不少,感谢!

Original comment by zhag...@gmail.com on 21 Aug 2011 at 1:34

GoogleCodeExporter commented 8 years ago
不客气。 ^_^

Original comment by lehui99 on 21 Aug 2011 at 1:41

GoogleCodeExporter commented 8 years ago
FreeWebHostingArea可以传探针,我的探针放了很久也没有问题http:
//bbstry.orgfree.com/tz.php   
realservers.info的空间是main—hosting,或者说是youhosting的空间,�
��系列空间都不行,而想这种10G、100G流量的空间基本都��
�他的,所以这种空间是不行的,很多cpanel空间都差不多是这�
��的,还有一种cpanel空间我找时间测试一下,vista 
panel空间我也测试一下,估计成功可能性不大

Original comment by yubinlov...@gmail.com on 24 Dec 2011 at 5:43

GoogleCodeExporter commented 8 years ago
恩,谢谢楼上,了解了不少。有阵子没来了

Original comment by zhag...@gmail.com on 25 Dec 2011 at 1:05