My favorites | Sign in
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
  Advanced search   Search tips   Subscriptions
Issue 40: FreeWebHostingArea测试成功,期待代理连接功能
1 person starred this issue and may be notified of changes. Back to list
Status:  Started
Owner:  ----


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

proxyHostName="127.0.0.1";

proxyPort="9050";

System.getProperty("socksProxySet",true);

System.getProperty("socksProxyHost",proxyHostName);

System.getProperty("socksProxyPort",proxyPort);

Aug 18, 2011
Project Member #1 lehui99
呵呵,感谢你的建议。

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

对了,有没有兴趣加入这个项目一起开发?
Status: Started
Labels: -Priority-Medium--------------------------------83512873127617Content-Dispositionform-dataname-token1a10ad70505769b2a9a7a80603a9ed4f Priority-Medium
Aug 19, 2011
#2 zhag...@gmail.com
有心无力啊,没那个技术。
php表示完全不行,只能是看到优秀项目就来观望支持一下。
https://code.google.com/p/goagent/
话说goagent项目也开始在支持ntlm代理了。。

Aug 19, 2011
Project Member #3 lehui99
其实支持代理功能只需要改Java客户端就可以了,不需要改php。

看你给出的代码应该和实际需要修改的代码差不多,不知道你会不会Java?
Aug 19, 2011
#4 zhag...@gmail.com
能看懂几行代码,多了就无力,不懂技术就是比较杯具啊。
运行时在java后面加上参数貌似就能走http代理了:
java -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8080

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


Aug 19, 2011
Project Member #5 lehui99
从1.5开始,http和https要分别设置代理,还要加上 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=8080

不稳定的时候,能否把log(客户端和服务器端的)发上来分析一下?
Aug 20, 2011
#8 zhag...@gmail.com
    选择国内不被墙的网站baidu和ip123测试,顺利打开并看到ip123显示了php主机的IP,
之后如果再打开个有图片的如推特或者淘宝就不行了,再打开ip123已经打不开了。
    反复测了几次,基本就是开始成功一会,后来就会http返回码500或者502。
这时用我的ip已经无法浏览器访问我建的php空间首页了,挂上一个国内代理又可以打开,说明不是被墙而只是拒绝我的ip访问。
    而且这时用java -Dhttp.proxyHost挂代理,phpsocks5又可以使用。说明确实是ip被拒绝。
    或许是phpsocks5访问socks5.php过于频繁,或者操作数据库过于频繁吧。好像是触发了主机的保护机制然后被拒绝访问。选择付费空间估计能解决,但这样通用性大打折扣了。
socks5err.rar
373 KB   Download
Aug 20, 2011
#9 zhag...@gmail.com
服务器的log
phpsocks5_log.rar
144 KB   Download
Aug 20, 2011
#10 zhag...@gmail.com
另外测试时打了sp1补丁。。
Aug 20, 2011
Project Member #11 lehui99
看了一下log,服务器500错很多都是因为不支持set_time_limit操作。

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

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

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

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

去除set_time_limit后,如果TCP连接超过30秒(比如下载大文件,或HTTP的长连接。HTTP的长连接通常被用于访问同一个域名下多个资源复用TCP连接)就会被强制断开连接。
Aug 20, 2011
#12 zhag...@gmail.com
    辗转测试了多次,也换了好几个空间。现在一一汇报下结果。
    前面用的免费空间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。
    这是日志

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

Aug 20, 2011
#14 zhag...@gmail.com
    另外测试了这个空间Primegalactic.
    phpsocks5完美运行,日志也有很多返回码500,但确实正常运行,无论是用本地ip还是java -Dhttp.proxyHost挂代理都好用。    
    可以推荐给广大一般用户使用,
    希望这种免费空间能一直运营下去吧。日志有20M就不传了。 
    探针http://174.136.63.6/~zhagenco/phptanzhen.php.php    
    从探针上看没有禁用的函数,也不知能否总结出这类空间的规律。
    标题这个FreeWebHostingArea现在发现好像上传php探针就会被禁用账户,而且不是人工而是自动被禁用,很奇怪。不建议其他用户注册,也没有再用作测试。
Aug 20, 2011
Project Member #15 lehui99
首先,服务器端的log文件是用来调试的,调试完成之后就可以把服务器端的log关掉,具体做法参考首页( https://code.google.com/p/phpsocks5/ )中的一句话:
建议在调试成功后手动将php中的debuginfo参数设置为False,并删除服务器端的log文件。debuginfo参数的具体意义可以参考Wiki页中的parameter_list页。

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

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

看了log后我再来反馈。
Aug 21, 2011
#16 zhag...@gmail.com
   下载大文件是会有问题,而且apjp和同类程序,似乎在代理调度转换端口时,
polipo,privoxy,3proxy,proxy switcher方式,其中总分别有一到几种方式是不支持的。
   realservers.info我再争取找几个国内国外代理挂上测下,整理下发一两个log上来供补充参考。
Aug 21, 2011
Project Member #17 lehui99
分析了一下log,发现很多时候由于到达了mysql的最大连接数导致php部分不能正常工作。http://zhagen2.realservers.info/phptanzhen.php.php 这个空间的mysql最大连接数是多少?

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

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

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来个网页之后被拒绝连接)
phpsocks5_log3.rar
781 KB   Download
socks5err3.rar
1.1 MB   Download
Aug 21, 2011
#19 zhag...@gmail.com
这是另一次
socks5err4.rar
419 KB   Download
phpsocks5_log4.rar
471 KB   Download
Aug 21, 2011
#20 zhag...@gmail.com
这是被拒绝连接后重启phpsocks5的这种情形的log。
基本是无连接


socks5err.log
11.1 KB   View   Download
Aug 21, 2011
Project Member #21 lehui99
看了一下xxx3.rar和xxx4.rar的log,发现xxx3中你是用本地的privoxy代理的java客户端?而且set_time_limit好像又打开了,又看到很多set_time_limit被禁止的错误。

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

最后就是发现似乎mysql超过了最大连接数之后,再去访问php的话,服务器会直接关闭连接,连http头都不会返回。规律似乎是一旦超过了mysql的最大连接数,那么最近访问最多的那个IP就会被服务器列入黑名单禁止访问一段时间。
Aug 21, 2011
#22 zhag...@gmail.com
本地privoxy是为了把SSH代理转换为http类型,方便代理java客户端。
恰好跟phpsocks5里的polipo一样,:-D
因为此时本地IP被禁止。改的时候一不注意用了之前的老版本所以set_time_limit又打开了。
重新关闭了set_time_limit现在。
phpsocks5_log5.rar
281 KB   Download
socks5err5.rar
406 KB   Download
Aug 21, 2011
Project Member #23 lehui99
还是因为mysql超过了最大连接数。

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

如果不用mysql,又只能做到类似apjp那样,https就必须伪造证书了。
Aug 21, 2011
#24 zhag...@gmail.com
恩,这个空间个例确实把mysql连接数限制得过于严格了,相信这样吝啬的空间也不会很多,或许主机里什么地方可以修改最大连接数也不一定,不过目前还不太了解。免费空间不少,用武之地很多。真是了解了不少,感谢!
Aug 21, 2011
Project Member #25 lehui99
不客气。 ^_^
Dec 23, 2011
#26 yubinlov...@gmail.com
FreeWebHostingArea可以传探针,我的探针放了很久也没有问题http://bbstry.orgfree.com/tz.php   
realservers.info的空间是main—hosting,或者说是youhosting的空间,这系列空间都不行,而想这种10G、100G流量的空间基本都是他的,所以这种空间是不行的,很多cpanel空间都差不多是这种的,还有一种cpanel空间我找时间测试一下,vista panel空间我也测试一下,估计成功可能性不大
Dec 25, 2011
#27 zhag...@gmail.com
恩,谢谢楼上,了解了不少。有阵子没来了

Powered by Google Project Hosting