标签归档:xmlhttprequest

QQ农场/校友农场数据格式分析及外挂设计

      前些日子特别爱玩QQ农场,因为学校这边十点半以后就断网了,所以收菜不及时损失惨重……买狗粮花钱,这不好,想想有什么解决方案没有……手机,手机一直可以上网。听说QQ有手机农场,但是正在内测,很不幸我黄钻0级用不了……考虑到QQ农场也是B/S模型的,也算是Web开发的领域,所以决定自己写一个手机农场的接口吧。

    JAVA和C++写手机客户端肯定不行,我都不怎么会,但是PHP还是很不错的。打算做一个类似代理服务器的东西,在服务器上与QQ服务器通讯,转成WAP2.0与手机交互。

    第一步就是实现登录。从通常的验证码机制来看,都是登录页写一个验证码的cookie key,然后提交时验证。我使用Firefox + Firebug + FireCookie 用来探测。浏览QQ空间登录页,发现用户名、密码文本框,还有其他一些隐藏域。这些东西都是要提交给QQ验证服务器的验证码Key是在验证图片的HTTP头里面加入的。这样,第一步就是先捕获验证码。这个比较容易,用上次写的PHP的xmlhttp类即可轻松实现。捕获图片,从HTTP头中读取Set-Cookie,将验证码的Key读取出来,写入本地Cookie或者Session中。
[codesyntax lang=”php”]
< ?php
/*
*验证码代理
*/
require_once ‘./inc/http.class.php’;

$verifycodeURL = ‘http://ptlogin2.qq.com/getimage?aid=’.rand();
$objhttp = new XmlHttpRequest();
$objhttp->open(“GET”, $verifycodeURL);
$objhttp->setRequestHeader(“User-Agent”, ‘Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; MAXTHON 2.0)’);
$objhttp->setRequestHeader(“Referer”, ‘http://qzone.qq.com/’);
$objhttp->send();
if ($objhttp->readyState == 4) {
  $responseCookie = $objhttp->getResponseHeader(“Set-Cookie”);
  $arr_CookieItem = explode(“;” ,$responseCookie[0]);
  $responseCookie = $arr_CookieItem[0];
  $arr_CookieItem = explode(“=” ,$responseCookie);
  $responseCookie = trim($arr_CookieItem[1]);
  setcookie(“qq_verifycode”, $responseCookie);
  header(“Content-Type: image/jpeg”);
  echo $objhttp->responseContent;
  exit();
}
unset($objhttp);
?>
[/codesyntax] 继续阅读

PHP封装的XmlHttpRequest类

      早就习惯了使用XmlHttpRequest来执行HTTP请求,虽然PHP自带的file类函数支持HTTP读取,但是不能自定义HTTP头是一个大问题。所以我就仿造MSXML2.XMLHTTP组件用socket封装了一个XmlHttpRequest类,虽然很简单,但是很方便~不敢独享,放出来给需要的朋友。

    使用方法请见MSDN的参考,在此不在赘述。和MSXML2.XMLHTTP组件不同的地方就是获取相应只有responseContent属性可用。

    代码如下: 继续阅读