0

数日間、DOTNETNUKE アプリケーションにログインするための小さな PHP スクリプトを取得しようとしましたが、役に立ちませんでした。ヘッダーとポスト変数は、Firefox の Tamper Data プラグインを使用して送信されているので、正確にコピーしました。

データを送信するたびに、次のエラーが発生します。

error=Your%20session%20has%20expired.%20%20Please%20try%20again.

私が言えることは、DOTNETNUKE Cookie が返されていないためであり、なぜ助けが得られるのかわかりません. 私のGUZZLEコードは以下の通りです:

include_once(LIBRARY_PATH . '/guzzle.phar');

use Guzzle\Http\Client;
use Guzzle\Plugin\Cookie\CookiePlugin;
use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;

$cookiePlugin = new CookiePlugin(new ArrayCookieJar());

$client = new Client('ASPX URL CODE GOES HERE');
$client->addSubscriber($cookiePlugin);
$client->setUserAgent('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0');

$response = $client->get('ASPX URL CODE GOES HERE')->send();

$request = $client->post('ASPX URL CODE GOES HERE', array(), array(
    '__EVENTTARGET' => 'dnn$ctr383$LoginPage$SearchPage$dataPanel$ctl01$ctl13$LoginButton',
    '__EVENTARGUMENT' => '',
    'dnn$ReturnModuleFocus' => '',
    'dnn$ModuleFocalPoint' => '',
    'dnn$ModuleInvokedFromDataSearch' => '',
    'dnn$ctr383$LoginPage$SearchPage$dataPanel$ctl01$ctl11$userName$mb_userName' => 'USERNAME HERE',
    'dnn$ctr383$LoginPage$SearchPage$dataPanel$ctl01$ctl12$password$mb_password' => 'PASSWORD HERE',
    'dnn$ctr383$LoginPage$SearchPage$dataPanel$ConfirmationSaveResponse' => '',
    'dnn$ctr383$LoginPage$SearchPage$dataPanel$MinMax' => '',
    'dnn$ctr383$LoginPage$SearchPage$dataPanel$dpPostBack' => '',
    'ScrollTop' => '',
    '__dnnVariable' => '',
    'ScrollX' => '0',
    'ScrollY' => '0',
    'iCWindowID' => '2',
    'iCRequestID' => '1',
    'iCFieldsChanged' => '0',
    '__VIEWSTATE' => ''
));

$response = $request->send();

echo $response;

お早めにどうぞ!

4

1 に答える 1

0

コードを見ると、ASP サイトを扱っているように見えます。私はASPが得意ではありませんが、それで構築された多くのサイトをスクレイピングしていました.あなたの問題は__VIEWSTATEパラメータです.

ASP はこのランダムな文字列をある種の奇妙なセッション処理に使用しています。ログインフォームページをダウンロードし、__VIEWSTATE隠し入力フィールドの値を解析することで簡単に解決できます

于 2013-07-16T14:17:29.290 に答える