2016-05-09 4 views
3

私はという成功したスクリプトをNode.jsに持っています。これは、ログインプロセスを模倣することによって、承認が必要なページからコンテンツを取得できます。承認が必要なページからコンテンツを取得する

PHPを使用して少し異なる目的のためにウェブページからコンテンツを取得する必要があり、JavaScriptをPHPに「変換」しようとしましたが、動作しません。

誰かがJavascriptからPHPにコードを切り替えたり、私の現在のコードで何が問題なのか教えてもらえますか?

のJavascriptのNode.jsの許可

var request = require("request"); 
var j = request.jar(); 
var cookie = request.cookie('entercookie'); 

j.setCookie(cookie, 'http://www.example.com'); 
var request = request.defaults({jar: j}); 

request.post('https://www.example.com/login', {username: 'username', password: 'password'}, function(err, res, body) { 
    makeRequest(100); 
}); 

PHP承認

$homepage = 'http://example.com'; 

$postData = http_build_query(
    array(
     'username' => 'username', 
     'password' => 'password' 
    ) 
); 
$cookie = 'cookie'; 

$context = stream_context_create(array(
    'http' => array(
     'method' => 'POST', 
     'header' => 'Content-type: application/x-www-form-urlencoded\r\n 
         Cookie: '.$cookie, 
     'content' => $postData 
    ) 
)); 
$data = file_get_contents($homepage, false, $context); 

echo $data; 

あなたが見ることができるように、私は私のように(ページのユーザー名、パスワード、およびクッキーを設定していますNode.js scrptで実行されました)、指定されたエラーが発生しています。

もっと良い解決策があれば、私はcURLを使用することに私は付け加えたいと思います。

+0

は、たぶん私は間違って私のスペックを覚えるんだけど、HTTP基本認証では、クッキーが上がりません'$ $ cookie'のbase64には連結がありません –

+0

@BrandonAnzaldi' cURL'を使ってこれを解決するのがよいでしょうか? –

答えて

1

あなたの問題は、JavaScriptコードで、ユーザー名とパスワードでPOSTリクエストをしていることです。

あなたは基本認証でGETリクエストをしているあなたのPHPコードで

、PHPコードはこのようなものに変更します。

$homepage = 'http://authorizationpage.com'; 

$postData = http_build_query(
    array(
     'username' => 'username', 
     'password' => 'password' 
    ) 
); 
$cookie = 'cookie'; 

$context = stream_context_create(array(
    'http' => array(
     'method' => 'POST', 
     'header' => 'Content-type: application/x-www-form-urlencoded\r\n 
         Cookie: '.$cookie, 
     'content' => $postData 
    ) 
)); 
$data = file_get_contents($homepage, false, $context); 

echo $data; 
+0

ええええええええええええええええええええええええええええええええええええええええんごう:file_get_contents():application-x-www-form-urlencodedと仮定して指定されていないコンテンツタイプと警告:file_get_contents(http://authorizationpage.com)ストリームを開く:HTTP要求に失敗しました! HTTP/1.1 403トークンの検証に失敗しました。 –

+0

承認が必要なページのURLを教えてもらえば簡単でしょうか? –

+0

@bobjomesあなたのウェブサイトがトークンを要求し、あなたに403 –

関連する問題