1

私が毎日アクセスするいくつかのサイトを実行し、それらから最も興味深い情報/統計を取得するスクリプトを作成しようとしています。これらのサイトの中には認証が必要なものがあるため、この目的のために curl を使用したかったのです。サイト rossnet.pl にぶつかるまではすべて問題ありませんでした。

使用したいフォームはこちらにあります: https://www.rossnet.pl/rossnetlogin.aspx

左側のテキストの下: "Mam konto w Rossnet.pl - Logowanie". 非表示の入力フィールドはないようです。資格情報用のテキスト フィールドは 2 つだけです。

以下に示すコードを使用していますが、サーバーから返されたページはまったく何も起こらなかったように見えます (エラー メッセージはなく、POST データを送信しない場合と同じように見えます)。

何が間違っているのか、誰にも手がかりがありますか? 以下のコードでは、スクリプトをテストできるように、実際のアカウント資格情報を入力しています。

ここで、以下のスクリプトが私のサーバーでどのように機能するかを確認できます: http://kremuwa.netii.net/rossman/skrypt.php

<?php

$url = "https://www.rossnet.pl/rossnetlogin.aspx";   

$ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);        
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'dnn$ctr1203$ViewLogin$txtUserLogin=warzywko3000&dnn$ctr1203$ViewLogin$txtUserPass=password123');

$output = curl_exec($ch);  

curl_close($ch);  

echo $output;

?>
4

1 に答える 1

1

ログインフォームは、最初にページをロードせずにフォームを直接送信できないという課題で保護されている場合があります。私はあなたの邪魔になる可能性のあるいくつかのオプションをリストアップしました。

1つのオプションはCookieの課題です。また、ページを読み込んで(Cookieを取得し)、フォームの送信と一緒に送信するだけで対処するのが最も簡単です。

もう1つのオプションは、隠しフィールドチャレンジです。非表示のフォームフィールドにはチャレンジコードが入力され、送信ではその値も送信されることが期待されます。

私が考えることができる最後のオプションは、JavaScriptを含むさらに難しいアプローチです。ページはJavaScriptを使用してチャレンジ文字列を読み込み、少し難読化してから送信します(非表示のフォームフィールドまたはajaxリクエストを介して)。

于 2012-08-30T15:50:52.257 に答える