2017-07-27 16 views
0

ウェブサイトからデータを取得しようとしていますが、このデータは署名されたユーザーのみが利用できますが、CURLを使用してログインすることはできません。それはCAPTCHAを使用するので、署名されたユーザーだけに許可されているページにCURLがアクセスできるようにするために、私がブラウザにサインアップして生成したCookieを使用しようとしています。PHP CurlでブラウザのCookieを使用してウェブサイトにログイン

これで、ブラウザを使用してcookie.txtファイルにログインしたときに、このウェブサイトが生成したすべてのCookieをコピーしたとします。 私は2つの質問があります:

cookie.txtにどのような形式で保存する必要がありますか?

CURLでこれらのクッキーをロードして使用するにはどうすればよいですか?

$curl = curl_init(); 

//load cookies from cookie.txt code 

curl_setopt($curl,CURLOPT_URL,$url); 
curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE); 
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,10); 
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE); 
curl_setopt($curl, CURLOPT_TIMEOUT, 10); 

$contents = curl_exec($curl); 
curl_close($curl); 
echo $contents; 

編集1

$url="https://google.com"; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_COOKIEJAR, '/Testing/cookie.txt'); 
curl_setopt($curl,CURLOPT_URL,$url); 
curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE); 
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,10); 
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);/
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE); 
curl_setopt($curl, CURLOPT_TIMEOUT, 10); 


$contents = curl_exec($curl); 
curl_close($curl); 
echo $contents; 

は、クッキーファイルの例を取得するために上記のコードを試してみましたが、cookie.txtを空のままのように思えます。

編集2

は私が__DIR__."/cookie.txt"'/Testing/cookie.txt'のパスを変更し、ファイル内に生成されたクッキーは、私はそれらを修正し、COOKIEFILEを使用して、それが動作するかどうかを確認しようとします。 3

編集は、以下にその答えを踏襲し、意図したとおりにそれが働きました。

答えて

0

は、クッキーファイルの形式を確認するには:あなたは

curl_setopt($ch, CURLOPT_COOKIEJAR, "path_to_the_cookie_file") 

は、次のクッキーを設定し、任意のWebサイトへのCURLの要求を実行する設定することができ、設定したクッキーファイルの形式を確認してください。次に、目的のクッキーを使用してクッキーファイルを構築し、自分のCURLリクエストがクッキーを送信するために設定

curl_setopt($ch, CURLOPT_COOKIEFILE, "path_to_the_cookie_file") 

を使用する:あなたのクッキーを送信するために

編集#1:公式PHPのドキュメント(http://php.net/manual/en/function.curl-setopt.php)から:

クッキーファイルは、Netscape形式にすることができ、あるいは単なるHTTPスタイル ヘッダは、ファイルにダンプ。

編集#2:これはCURL(source)によって生成されたクッキーファイルの例です:

# Netscape HTTP Cookie File 
# This file was generated by libcurl! Edit at your own risk. 
.auto.com TRUE / FALSE 1452087781 ___suid 2ecfe4287cbeacd8399eaf98bec9ce0b.59089b9d033bc7c6dce8ea2fca139920 
.auto.com TRUE / FALSE 1452865380 all7_user_region_confirmed 1 
.auto.com TRUE / FALSE 1452865380 geo_location a%3A3%3A%7Bs%3A7%3A%22city_id%22%3Ba%3A0%3A%7B%7Ds%3A9%3A%22region_id%22%3Ba%3A1%3A%7Bi%3A0%3Bi%3A89%3B%7Ds%3A10%3A%22country_id%22%3Ba%3A0%3A%7B%7D%7D 
.auto.com TRUE / FALSE 1423921380 autoru_sid ee094d60fa32eada_daf2da69dc79a59b7c8702a29554abbc 
.auth.auto.com TRUE / FALSE 1421329026 autoru_sid 
.auth.auto.com TRUE / FALSE 1421329026 autoru_sid_key 
.auto.com TRUE / FALSE 1421329026 cc6882cb6b6f0c912cf9589734fcc1e6  
.auto.com TRUE / FALSE 1452865027 user_name igor.savinkin5%40gmail.com 
.auto.com TRUE / FALSE 1452865027 username igor.savinkin5%40gmail.com 

編集#3:私のcookies.txtファイル内のすべてのこれらのエントリは何ですか?(http://www.cookiecentral.com/faq/#3.5

左から右から、ここでは、各フィールドが何を表すかです:

ドメイン - 作成され、その変数を読み取ることができるドメインを。

フラグ - 与えられた ドメイン内のすべてのマシンが変数にアクセスできるかどうかを示すTRUE/FALSE値。この値は、ドメインに設定した値に応じて、ブラウザ によって自動的に設定されます。

パス - 変数が有効なドメイン内のパス。

secure - 変数にアクセスするためにドメイン との安全な接続が必要かどうかを示すTRUE/FALSE値。

有効期限 - 変数が期限切れになるUNIX時間。 UNIX時間 は、1970年1月1日00:00:00 GMTからの秒数として定義されます。

名前 - 変数の名前。

値 - 変数の値です。

+0

私は自分の投稿を更新しました。 –

0

は保存クッキーのためのオプションを追加してください:

curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookies.txt'); 
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookies.txt'); 
+0

私はクッキーを保存しようとしていません。ブラウザクッキーを使用して、署名されたユーザーのみに許可されているページにアクセスできるようにしています。それは私が探しているものではないので、私の完全な投稿をお読みください。 –

+0

@JohnColbirユーザーを認証するために、アクティブなCURLOPT_COOKIEFILEおよびCURLOPT_COOKIEJARを使用してCurlを使用します(ログイン+パスワードでPOSTを送信します)。その後、認証されたユーザーのようなサイトを解析します – dekameron

+0

アクティブなCURLOPT_COOKIEFILEとCOOKIEJARはどういう意味ですか? cookies.txtには何が含まれていますか? –

関連する問題