首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 實現 QQ 空間獲取用戶暱稱生成圖片

     編輯:PHP 相關知識

PHP 實現 QQ 空間獲取用戶暱稱生成圖片

利用 QQ 空間編輯器的 Referer 機制,結合公開的 QQ 資料介面,動態生成包含當前訪客 QQ 號與暱稱的圖片。常見於 QQ 空間轉發圖片、個性化歡迎圖等場景。

核心原理

  1. 從 $_SERVER['HTTP_REFERER'] 取得來源頁面 URL
  2. 正則提取 URL 中的 QQ 號(5-11 位數字)
  3. 請求介面 https://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=QQ號 獲取 JSON 資料
  4. 解析 JSON 中的 nickname 欄位
  5. 使用 GD 庫在底圖上繪製 QQ 號與暱稱,輸出 PNG/JPEG

圖片生成腳本 (image.php)

<?php
$ment = $_SERVER["HTTP_REFERER"];
if ($ment == 'https://cnc.qzs.qq.com/qzone/newblog/v5/editor.html') {
    header("HTTP/1.0 500 Internal Server Error");
    exit;
}
preg_match("#[0-9]{5,11}#", $ment, $rr);
$r = $rr[0];
$webtext = file_get_contents('https://www.phperzone.cn/demo/qqinfo-service.php?qq=' . $r);
preg_match('#"nickname":"(.*?)"#', $webtext, $rr);
$rrr = $rr[1];

ob_clean();
header("Content-type: image/png");
$im = imagecreatefromjpeg("1.jpg");
$black = ImageColorAllocate($im, 56, 73, 136);
$rrr = mb_convert_encoding($rrr, "utf-8", "UTF-8");
imagettftext($im, 20, 0, 90, 68, $black, "./simsun.ttc", $rrr);
imagettftext($im, 26, 0, 87, 125, $black, "./simsun.ttc", $r);
imagejpeg($im);
imagedestroy($im);
?>

QQ 資料介面代理 (qqinfo-service.php)

<?php
header("Content-Type: text/html; charset=utf-8");
$qq = $_GET["qq"];
echo htmlspecialchars(file_get_contents('https://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=' . $qq));
?>

部署要點

  • 準備底圖 1.jpg 與字型檔 simsun.ttc(需授權或使用開源字型)
  • 確保伺服器開啟 allow_url_fopen 或使用 cURL 替代
  • 介面頻率限制與穩定性不可控,建議加入快取與錯誤處理
  • Referer 可偽造,僅供娛樂/展示用途,不可用於身份驗證

法律與道德提醒

獲取並展示他人 QQ 暱稱屬於個人資訊處理,請遵守相關隱私法規與騰訊服務條款,勿用於商業追蹤或騷擾。

此技術展示 HTTP Referer、公開 API 串接與 GD 圖片生成的綜合應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved