2011-11-10 9 views
0

エミュレートする方法CURLOPT_FOLLOWLOCATION?この機能は私のウェブサーバでは無効になっています。CURLOPT_FOLLOWLOCATIONエミュレーション

サイトから統計情報を取得したいが、正しいページを取得できない。

要求:

 
POST https://www.example.com/login HTTP/1.1 
Host: www.example.com 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22 
Content-Length: 200 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Origin: https://www.example.com 
Content-Type: application/x-www-form-urlencoded 
Referer: https://www.example.com/login?logout=1&final_logout=1& 
Accept-Language: ru-RU 
Accept-Encoding: gzip, deflate 
Cookie: mochipass_session= 
Connection: keep-alive 
Proxy-Connection: keep-alive 

t_token=%3A1320923163%3A191098013553085002228331177770025958552%3AvcXtA5YwNT58Nt6uEGK-gvwpGqM%21&email=mytesingcomp&password=mytesingcomp&remember_me=on&login=Login&service=ads&host=www.mochimedia.com 

回答:

 
HTTP/1.1 302 Moved Temporarily 
Date: Thu, 10 Nov 2011 11:06:40 GMT 
Connection: close 
Set-Cookie: example_session=mytesingcomp&1320923200&H3rV7aMe&euqh6CL4I7x2PgtWcsJa-X0n_r4!; Version=1; Expires=Thu, 24-Nov-2011 11:06:40 GMT; Max-Age=1209600; Secure 
Server: Example/1.0 (Any of you quaids got a smint?) 
Location: https://www.example.com/login?email=mytesingcomp%40mail.ru&alias=mytesingcomp&status=verified&registered_service=ads&timestamp=1320923200&nonce=hmCFzV-9&hmac=EHNUJYf2dbVsg8Y-J7iEdzgHyT0%21&login=login 
Content-Length: 46 
X-Example-Server: 38.102.129.29:443 
P3P: policyref="http://www.example.com/p3p/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV" 
X-Example-Backend: 10.0.0.107:40061 
X-Example-Source: 10.0.0.237:44200 

CONGRATULATIONS, you're logged in. Redirecting 

今、私たちはそれにcURLで作る方法を、リダイレクトを行う必要がありますか?

+2

あなた自身の疑問はありませんか? curl_setopt($ handle、CURLOPT_FOLLOWLOCATION、true)を使用します。 – dmitry

+0

いいえ、CURLOPT_FOLLOWLOCATIONは使用できません。エミュレートする必要があります。 –

+1

HTTPコードが30xの場合は、「Location」を読んで、必要な操作を行い、手動でその場所に移動してください。 – dmitry

答えて

0

も、など、既定値を使用する工事をしてみてください。これは頭の答えを解析してmanualyしてみてください、あなたを助けていない場合

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

、のようなものは:

if (preg_match('/Location: (.+?)[\r\n]+/', $page, $m)) { 
    $location = $m[1]; 
    $page = curl_get($location); 
} 
+0

CURLOPT_FOLLOWLOCATIONはローカルサーバーでのみ機能しますが、自分のホストでは無効になります(open_basedirの問題)。 –

+0

よく、次にFOLLOWLOCATIONを使用しないでください。手動で答えを解析し、手動で新しいページを取得してください – itspoma

-1

問題は解決します!私は2つの行だけを追加する必要がありました。

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 

誰にでも役立つことを願っています。

関連する問題