Submitted by 有空来玩玩 on 2010, May 2, 11:29 PM
今天闲着无聊,写了这么一个小程序。不过本人没条件测试,所以最终效果还不知道。哈哈。
具体的设置是需要设置rewrite所有链接到代理程序的文件上,然后就可以通过此程序访问其它站点了。不过估计性能不会太高吧。反向代理还是用NGINX来做好些吧。不过对于虚拟主机倒是有用武之地了。
代码如下:
» 阅读全文
WEB技术 | 评论:0
| Trackbacks:0
| 阅读:166
Submitted by 有空来玩玩 on 2010, April 11, 8:49 AM
Fiddler真乃神器!它和市面上常见的很多web调试器、http调试器、sniffer都不同!它的原理是在浏览器(或者其他使用http协议的进程)和服务器之间做代理角色,这样所有的通信都要经过它!尽管sniffer和这个原理是一样的,但他们工作的网络层不同。
看上图,你就明白原理了咯,它以8888端口(多么吉利的数字呀!)开本地代理服务器,并且支持https!所以,只要你的http通讯将代理设置为本地8888,fiddler都能帮助你截获数据;另外,说他是神器,除了他具有一般web调试器的所有功能之外,其最最大的一个特点是可以中途修改http通信内容!!!看下图:

嗯,就是这样,提交内容和服务端响应内容都可以被fiddler中断,修改内容后再次继续,在ajax通信的时候,我们可以利用这个功能来调试数据,测试bug!方便至极。
还有一个我不得不说的功能就是Fiddler内置的request Builder能让你轻松的构造http请求,之前我一直用的是火车采集器里面的那个简易的POST/GET Builder,个人感觉Fiddler的这个更好用一些。另外的一个附件就是encoder,方便的解码base64、urlencode、hex等进行的相互转换,之前我是用JS写了一个工具实现这个功能,吼吼!~我发现Fiddler的时候不知道有多兴奋,以前用wireshark+火车采集器+JS encoder,现在只需要开一个Fiddler就可以啦!
今天,我就隆重的把它介绍给大家,也许大家早已在使用了,因为这个工具已经存在很久了,微软的东西,需要.net freamework 支持,这是唯一不爽的地方!但我承认,微软的.net类库真的太丰富了!快来使用哈!更多功能期待您的发掘。
Tags: http协议, 调试
WEB技术 | 评论:0
| Trackbacks:0
| 阅读:203
Submitted by 有空来玩玩 on 2010, March 25, 10:31 PM
看代码:
PHP代码
- <?php
- if(isset($argv[1]))
- {
- sleep(100);
- }
- else
- {
-
-
- for($i=0;$i<100;$i++)
- {
-
- pclose(popen("nohup php -q test.php $i >>/tmp/test.$i.log &",'r'));
- }
- }
- ?>
popen和pclose可能对一些人来说比较陌生。
不过你应该听说过system() exec() passthru() ``
popen也是用来执行系统命令的,它与其他执行方式有一点不同,它执行后返回命令指针,就像fopen那样。而不是等待程序的完成返回最终结果。
配合nohup可以让程序在关闭指针后,子任务仍然能继续执行。
注意:">>/tmp/test.$i.log"的作用是重定向nohup的输出。缺少的话,程序将不能在后台执行。
例子有点简陋。不过,应该能把事情说清楚了吧。
Tags: php, 多线程, 多进程
WEB技术 | 评论:0
| Trackbacks:0
| 阅读:265
Submitted by 有空来玩玩 on 2010, March 25, 10:26 PM
除了fork, cli下的并发方式还有一种,看我的例子:
php不支持多线程,但是我们可以把问题转换成“多进程”来解决。由于php中的pcntl_fork只有unix平台才可以使用,所以本文尝试使用popen来替代。
下面是一个例子:
被并行调用的子程序代码:
» 阅读全文
Tags: php, 多线程, 多进程
WEB技术 | 评论:0
| Trackbacks:0
| 阅读:222
Submitted by 有空来玩玩 on 2010, March 25, 10:13 PM
我们知道PHP本身是不支持多线程的, 但是我们的WEB服务器是支持多线程的.也就是说可以同时让多人一起访问. 这也是我在PHP中实现多线程的基础.假设我们现在运行的是a.php这个文件. 但是我在程序中又请求WEB服务器运行另一个b.php那么这两个文件将是同时执行的.
(PS: 一个链接请求发送之后, WEB服务器就会执行它, 而不管客户端是否已经退出)
有些时候, 我们想运行的不是另一个文件, 而是本文件中的一部分代码.该怎么办呢?
其实可是通过参数来控制a.php来运行哪一段程序.
» 阅读全文
Tags: php, 多线程, 多进程
WEB技术 | 评论:0
| Trackbacks:0
| 阅读:259
Submitted by 有空来玩玩 on 2010, March 25, 10:02 PM
手机视频广告,用PHP发送视频广告,需要通过PHP执行一个外部发送视频命令。
可以写PHP扩展来完成,本人没有那个能力及时间,故使用exec()这个函数来完成。
passthru(),exec(),system() 这三个函数功能相似.passthru无法接受输出值,system只接收最后以行输出,exec可以完全接收输出.
见如下passthru的一个例子:
» 阅读全文
Tags: php, 多线程, 多进程
WEB技术 | 评论:0
| Trackbacks:0
| 阅读:267
Submitted by 有空来玩玩 on 2010, March 21, 9:58 AM
现在很多登录密码,提交的javascript加密后的密文,给模拟登录带来一定困难。java6已经支持ScriptEngine,模拟起来比较简单,其它语言可能相对复杂一点。
本文介绍用SpiderMonkey来实现在linux命令行下运行脚本文件。
下面的脚本在ubuntu8.10下测试通过:
» 阅读全文
Tags: linux, js
WEB技术 | 评论:0
| Trackbacks:0
| 阅读:214
Submitted by 有空来玩玩 on 2010, January 26, 12:48 PM
PHP代码
-
- function unicode_encode($name)
- {
- $name = iconv('UTF-8', 'UCS-2', $name);
- $len = strlen($name);
- $str = '';
- for ($i = 0; $i < $len - 1; $i = $i + 2)
- {
- $c = $name[$i];
- $c2 = $name[$i + 1];
- if (ord($c) > 0)
- {
- $str .= '\u'.base_convert(ord($c), 10, 16).base_convert(ord($c2), 10, 16);
- }
- else
- {
- $str .= $c2;
- }
- }
- return $str;
- }
-
-
- function unicode_decode($name)
- {
-
- $pattern = '/(\\\u([\w]{4}))/i';
- $name = preg_replace_callback( $pattern , '_unicode_decode' , $name );
- return $name;
- }
-
- function _unicode_decode( $str ) {
- $str = $str[0];
- $name = '';
- $code = base_convert(substr($str, 2, 2), 16, 10);
- $code2 = base_convert(substr($str, 4), 16, 10);
- $c = chr($code).chr($code2);
- $c = iconv('UCS-2', 'UTF-8', $c);
- $name .= $c;
-
- return $name;
- }
-
-
- function jsonDecode( $json , $to_encode = 'gbk' , & $i = 0 ) {
- if ( null === $i ) {
- $i = 0;
- }
-
- for( ; $i < strlen( $json ) ; $i ++ ) {
- $chr = $json[$i];
-
- switch( $chr ) {
- case '"' :
- case "'" :
- //字符串
- $i ++;
- $val = '';
- while( $json[$i] != $chr || $lastChr == '\\' ) {
- $lastChr = $json[$i];
- $val .= $lastChr;
- $i ++;
-
- }
- ++ $i;
-
- //字符串处理
-
- //unicode 转汉字
- $val = unicode_decode( $val );
- if ( strtolower( str_ireplace( '-' , '' , $to_encode ) ) !== 'utf8' ) {
- $val = mb_convert_encoding( $val , $to_encode , 'utf-8' );
- }
- $val = stripslashes( $val );
- return $val;
- break;
- case 'a' :
- case 'b' :
- case 'c' :
- case 'd':
- case 'e':
- case 'f':
- case 'g':
- case 'h':
- case 'i':
- case 'j':
- case 'k':
- case 'l':
- case 'm':
- case 'n':
- case 'o':
- case 'p':
- case 'q':
- case 'r':
- case 's':
- case 't':
- case 'u':
- case 'v':
- case 'w':
- case 'x':
- case 'y':
- case 'z':
- case 'A' :
- case 'B' :
- case 'C' :
- case 'D':
- case 'E':
- case 'F':
- case 'G':
- case 'H':
- case 'I':
- case 'J':
- case 'K':
- case 'L':
- case 'M':
- case 'N':
- case 'O':
- case 'P':
- case 'Q':
- case 'R':
- case 'S':
- case 'T':
- case 'U':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'Z':
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
-
- //字符串
- if ( trim( $chr ) === '' ) {
- continue;
- }
- $val = $chr;
- while( preg_match( '#^[a-zA-Z0-9\.]$#' , $json[++$i] ) ) {
- $val .= $json[$i];
- }
- $lVal = strtolower( $val );
- if ( $lVal == 'true' ) {
- return true;
- }
- if ( $lVal == 'false' ) {
- return false;
- }
- if ( preg_match( '#^[0-9\.]+$#' , $lVal ) ) {
- return $val + 0;
- }
- return $val;
- case '{' :
- $val = array();
- $i ++;
- $key = '';
- while( $json[$i] != '}' ) {
- $key .= $json[$i];
- $i ++;
- if ( $json[$i] == ':' ) {
- $key = ltrim( $key );
- $key = ltrim( $key , ',' ); //去除,
- $key = trim( $key );//去两边的空白
- if ( preg_match( '#^"(.+?)"$#' , $key , $m ) ) {
- $key = $m[1];
- }
- if ( preg_match( '#^\'(.+?)\'$#' , $key , $m ) ) {
- $key = $m[1];
- }
- ++ $i;
- $val[$key] = jsonDecode( $json , $to_encode , $i );
- $key = '';
- }
- }
- ++ $i;
- return $val;
- break;
- case '[' :
- $val = array();
- $i ++;
- $t = 0;
- while( $json[$i] != ']' ) {
- if ( $json[$i] == ',' ) {
- $i ++;
- continue;
- }
- $val[] = jsonDecode( $json , $to_encode , $i );
-
- }
-
- $i ++;
- return $val;
- break;
- }
- }
- return NULL ;
- }
用法:
PHP代码
- $array_gbk = jsonDecode( $jsonString );
-
- $array_utf8 = jsonDecode( $jsonString , 'utf-8' );
WEB技术 | 评论:0
| Trackbacks:0
| 阅读:616