QQ空间日志导出(php)
来源:互联网 发布:mysql是php 编辑:程序博客网 时间:2024/05/19 15:40
最近项目需要有一个博客搬家功能,需要能够导出用户的qq空间日志,试了多种方法未果,最终又找了网上很多qq空间算法的文章,最终搞定。有兴趣的同学一起学习。。。
先说下思路:
- 检查登录是否需要验证码,获取验证码校验值
- 通过验证码校验值、密码计算出登录校验值
- 模拟登录
- 计算qq空间获取日志的key
- 获取日志列表和每篇日志信息
简述实现步骤和请求地址:
- 检查是否需要验证码:
- URL:http://check.ptlogin2.qq.com/check?uin=QQ号码&appid=549000912&ptlang=2052&js_type=2&js_ver=10009&r=0.12028346643338428
- 参数说明:
- uin:QQ号
- r:随机数
- 返回结果:
- 不需要验证码:ptui_checkVC('0','!UYE','\x00\x00\x00\x00\x09\x15\xa9\x78')
- 需要验证码:ptui_checkVC('1','a549914029222a94ee04501b02be85959c48245e930257d4','\x00\x00\x00\x00\x22\xc3\x37\x60');
- 服务器会生成COOKIE,记得写入文件
- 如果需要验证码,可以获取QQ验证码保存到本地,让用户手动输入
- 拉取验证码url:http://captcha.qq.com/getimage?aid=549000912&r=随机数&uin=QQ号码
- 注意:需要发送上面生产的COOKIE
- 计算校验值:
- $uin = uin2bin($skey);
$localstr = hexchar2bin($password);
$localstr2= strtoupper(md5($localstr.$uin));
$pwd = strtoupper(md5($localstr2 . strtoupper($code))); - 参数说明:
- $sky:ptui_checkVC函数中的第三个参数
- $password:QQ密码
- $code:不需要验证码时,ptui_checkVC的第二个参数;需要验证码时,用户手动输入的验证码
- $uin = uin2bin($skey);
- 模拟登录:
- URL:http://ptlogin2.qq.com/login?ptlang=2052&u=QQ号码&p=上面加密后的$pwd&verifycode=验证码$code&css=http://imgcache.qq.com/p
tcss/b2/sjpt/549000912/qzonelogin_ptlogin.css&mibao_css=m_qzone&aid=549000912&u1=http%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Flogin
succ.html%3Fpara%3Dizone&ptredirect=1&h=1&from_ui=1&dumy=&fp=loginerroralert&action=4-16-29103&g=1&t=1&dummy=&js_type=2&js_ve
r=10009 - 要发送COOKIE,并记录新生产的COOKIE
- 成功后返回结果:ptuiCB(\'0\',\'0\',\'http://qzs.qq.com/qzone/v5/loginsucc.html?para=izone\',\'1\',\'登录成功!\', \'QQ昵称\')
- URL:http://ptlogin2.qq.com/login?ptlang=2052&u=QQ号码&p=上面加密后的$pwd&verifycode=验证码$code&css=http://imgcache.qq.com/p
- 生成获取博客所需的g_tk:
- $g_tk=getGtk($skey),$skey是COOKIE文件中的skey值,类似@kqFx8cEUd
- $g_tk=getGtk($skey),$skey是COOKIE文件中的skey值,类似@kqFx8cEUd
- 获取日志列表:
- URL:http://b1.cnc.qzone.qq.com/cgi-bin/blognew/get_abs?ref=qzone&iNotice=2&inCharset=gbk&outCharset=gbk&forma
t=json&hostUin=QQ号码&uin=QQ号码&blogType=0&cateName=&cateHex=&statYear=&reqInfo=1&pos=%d&num=%d&sortType=0&absType
=0&startTime=null&endTime=null&source=0&rand=%f&g_tk=$g_tk&verbose=0&ref=qzone
- URL:http://b1.cnc.qzone.qq.com/cgi-bin/blognew/get_abs?ref=qzone&iNotice=2&inCharset=gbk&outCharset=gbk&forma
- 获取某篇日志:
- URL:http://b1.cnc.qzone.qq.com/cgi-bin/blognew/blog_output_data?uin=QQ号码&blogid=日志ID&g_tk=$g_tk
function hexchar2bin($str)
{
$str = strtoupper(md5($str));
return pack("H*",$str);
}
function uin2bin($uin)
{
$str = str_replace('\x','',$uin);
return pack("H*",trim($str));
}
{
$str = strtoupper(md5($str));
return pack("H*",$str);
}
function uin2bin($uin)
{
$str = str_replace('\x','',$uin);
return pack("H*",trim($str));
}
function getGtk($skey)
{
$hash = 5381;
$len = strlen($skey);
for($i = 0;$i < $len;$i++){
$h = ($hash << 5) + ord($skey[$i]);
$hash+=$h;
}
return $hash & 0x7fffffff;
}
{
$hash = 5381;
$len = strlen($skey);
for($i = 0;$i < $len;$i++){
$h = ($hash << 5) + ord($skey[$i]);
$hash+=$h;
}
return $hash & 0x7fffffff;
}
源代码整理后上传
- QQ空间日志导出(php)
- Python导出QQ空间的日志
- 查看加密QQ空间日志
- QQ空间魔力日志源代码
- php+mysql留言板(模仿qq空间留言板)
- 关于qq加密空间日志的突破
- java实现QQ空间日志列表获取
- 关于【QQ空间魔力日志】的说明
- PHP实现的QQ空间g_tk加密算法
- QQ空间日志抓器---我的第一个winform小应用(多线程,附源码)
- 利用Google博客搜索查看加密QQ空间(qzone)日志
- firefox显示不了QQ空间日志内容的临时解决方法
- SPL - QQ空间日志查看工具 v1.1.0.441
- 编写程序自动刷QQ空间日志浏览量
- 利用Google博客搜索查看加密QQ空间(qzone)日志
- 如何破解好友QQ空间加密.查看最新日志
- 再见,再相见,再也不见-QQ空间伤感日志
- 过去的记忆,已经无动于衷:QQ空间伤感日志
- [转]EL隐含对象param、paramValues的使用实例
- SVG中常用基本形状教程
- js 清空复选框
- 交叉编译SPECCPU2006
- 解决flex的HttpService缓存的问题
- QQ空间日志导出(php)
- 微软的面试题答案-超变态但是很经典
- 学习IOS编程必须要知道的一些知识
- ios总结
- onInterceptTouchEvent()与onTouchEvent()的机制
- tcp和udp多线程的epoll服务器+客户端源代码
- mysql_与java数据类型对比
- Silverlight下载网络图片
- 运维工程师