十二月 05 2007

Profile Image of evenrain
evenrain

透過 PHP 的 CURL 發送 Cookie

Posted at 10:31:47 under namenlos

這篇主要是留個紀錄,原因是台灣魔獸官方的英雄榜不知何故將英文做為預設語言,導致魔獸簽名圖軍階消失以及專業與伺服器變為英文。原先我以為是英雄榜短暫的改為英文版,後來才發現原來底下有選擇語言的選項,而且看來預設是英文。

看了一下英雄榜的原始碼,發覺語言選項是用 cookie 的方式儲存。這下可好了,我應該怎麼透過 PHP 的 CURL 送出 Cookie 呢?Google 了一下,找到方法也證實可用,至少簽名圖恢復正常了。方法其實很簡單,我將簽名圖中的部份程式貼出如下:

PHP:
  1. $ch = curl_init();
  2. $timeout = 30; // set to zero for no timeout
  3. $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
  4. $cookie = "cookieLangId=zh_tw;";
  5. curl_setopt ($ch, CURLOPT_URL, $url);
  6. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  7. curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  8. curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);
  9. curl_setopt ($ch, CURLOPT_COOKIE, $cookie);
  10. $f = curl_exec($ch);
  11. curl_close($ch);

重點在第九行,如果有多個 cookie 值則以分號 「;」 分隔即可。

順道哀號一下。用 Google 搜尋魔獸簽名圖,第一名是簽名圖的網址,第二名是大陸的遊戲新聞網站提到一個波蘭的玩家自繪的簽名圖作品,第一頁其他部份都是提到魔獸簽名圖的論壇或是 Blog,而我自己 Blog 寫的文竟然被擠到第二頁去了 orz

標籤:, , , ,

相關文章

4 responses so far

4 Responses to “透過 PHP 的 CURL 發送 Cookie”

  1. Sephiroth.Wangon 06 十月 2008 at 23:39:15 1

    不好意思,最近也需要用到此類語法…感覺跟您的例子很類似,
    我的目的是抓取搜尋引擎,搜尋後的頁面…但是 Live search會
    自動幫我轉到台灣版的網頁,應該也是cookie的部份,想請教您
    如何寫入cookie,讓他轉到英文版的頁面!您的例子我大概懂,
    但是否有個完整的例子呢?謝謝!

    evenrain Reply:

    請看第四行與第九行

    Sephiroth.Wang Reply:

    第四行的部份 cookieLangId=zh_tw;
    這個應該是每個網頁都不同才是,我有去把他的header打開來看
    其中有一段是如此,Set-Cookie: mkt2=ui=zh-TW
    請問要怎麼改呢?謝謝

    evenrain Reply:

    那就改成 mkt2=ui=zh-TW 試試看囉

Trackback URI | Comments RSS

Leave a Reply