QQ空間日誌匯出(php)
最近專案需要有一個部落格搬家功能,需要能夠匯出使用者的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;
}
原始碼整理後上傳
相關文章
- Dell伺服器匯出日誌伺服器
- OracleDatabase——資料庫表空間dmp匯出與匯入OracleDatabase資料庫
- canvas打造QQ空間低俗廣告Canvas
- lnmp關閉mysql日誌保護硬碟空間的方法LNMPMySql硬碟
- lnmp下如何關閉Mysql日誌保護磁碟空間LNMPMySql
- PHP名稱空間PHP
- PHP 名稱空間PHP
- iOS 檢視及匯出專案執行日誌iOS
- PHP 匯出 ExcelPHPExcel
- PHP 匯出 PDFPHP
- PHP匯出EXCELPHPExcel
- 那些炫酷的特效–QQ空間+VUE特效Vue
- QQ空間相簿批量下載【原圖】
- php匯出csv格式PHP
- mybatis-plus匯入sql日誌MyBatisSQL
- 日誌服務資料匯入
- 爬蟲實戰 -- QQ空間自動點贊爬蟲
- PHP 核心特性 - 名稱空間PHP
- TP3.1.3 魔力日誌網-自動顯示QQ頭像QQ暱稱
- 最新採集下載QQ空間相簿照片的方法
- 龍主機-國外PHP空間PHP
- w10系統打不開qq空間如何修復_win10電腦上qq空間打不開怎麼辦Win10
- PHP 匯出 Excel 的優化PHPExcel優化
- PHP 匯出 CSV 格式檔案PHP
- python如何輸出日誌?Python
- PHP 獲取伺服器磁碟空間PHP伺服器
- PHP 物件導向 (三)名稱空間PHP物件
- php名稱空間的呼叫順序PHP
- 開啟PHP的錯誤log日誌PHP
- 用php把資料匯出excelPHPExcel
- QQ 空間備份神器,一鍵備份你所有的青春!
- QQ空間無法上傳多張圖片解決方案
- 當使用者無限制使用表空間配額且表空間有足夠空間時出現超出表空間的空間限額
- 深入淺出之切空間
- IIS 日誌匯入到資料庫的方法資料庫
- mariadb審計日誌通過 logstash匯入 hiveHive
- python日誌重複輸出Python
- 自研 PHP 框架 1.1_名稱空間PHP框架
- 操作日誌記錄(包括輸出至自定義日誌檔案)