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

PHP cURL 模擬登入人人網 (Renren) 完整實戰代碼

     編輯:PHP 相關知識

PHP cURL 模擬登入人人網 (Renren) 完整實戰代碼

利用 cURL 保持 Cookie 會話,完成「POST 登入表單 → 攜帶 Cookie 訪問首頁」完整流程。注意:人人網已停止服務,代碼僅供 cURL 會話管理教學參考。

核心代碼

<?php
$loginUrl = 'https://passport.renren.com/PLogin.do';
$postFields = [
    'email'    => 'your_email',
    'password' => 'your_password',
    'origURL'  => 'http%3A%2F%2Fhome.renren.com%2FHome.do',
    'domain'   => 'renren.com',
];

// Cookie 檔案存放於臨時目錄
$cookieFile = tempnam(sys_get_temp_dir(), 'cookie_');

$ch = curl_init($loginUrl);
curl_setopt_array($ch, [
    CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
    CURLOPT_HEADER         => 0,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_MAXREDIRS      => 1,
    CURLOPT_FOLLOWLOCATION => 1,
    CURLOPT_AUTOREFERER    => 1,
    CURLOPT_POST           => 1,
    CURLOPT_POSTFIELDS     => http_build_query($postFields),
    CURLOPT_COOKIEJAR      => $cookieFile, // 登入後寫入 Cookie
]);
curl_exec($ch);
curl_close($ch);

// 攜帶 Cookie 訪問需登入頁面
$homeUrl = 'https://home.renren.com/Home.do';
$ch = curl_init($homeUrl);
curl_setopt_array($ch, [
    CURLOPT_HEADER         => 0,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_COOKIEFILE     => $cookieFile, // 讀取 Cookie
]);
$content = curl_exec($ch);
curl_close($ch);

// 清理暫存 Cookie 檔
unlink($cookieFile);

echo $content; // 輸出首頁 HTML
?>

關鍵 cURL 選項解析

選項作用
CURLOPT_COOKIEJAR回應中 Set-Cookie 寫入此檔案(登入階段)
CURLOPT_COOKIEFILE請求時讀取此檔案發送 Cookie(後續訪問)
CURLOPT_FOLLOWLOCATION自動追蹤 301/302 重定向
CURLOPT_AUTOREFERER重定向時自動補上 Referer
CURLOPT_POSTFIELDS配合 CURLOPT_POST=1 發送 application/x-www-form-urlencoded
http_build_query()將陣列安全編碼為 URL 參數字串

現代化寫法建議 (Guzzle / Symfony HttpClient)

// Guzzle 7 範例
$client = new \GuzzleHttp\Client(['cookies' => new \GuzzleHttp\Cookie\FileCookieJar($cookieFile)]);
$client->post($loginUrl, ['form_params' => $postFields]);
$resp = $client->get($homeUrl);
echo $resp->getBody();

注意事項

  • 真實專案請遵守目標網站 robots.txt 與服務條款,避免濫用。
  • 登入表單可能包含 CSRF Token、驗證碼、加密欄位,需先分析網頁源碼/Network 面板。
  • HTTPS 站點需啟用 CURLOPT_SSL_VERIFYPEER (生產環境建議設為 true 並配置 CA 憑證)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved