2012-04-04 3 views
0

私の理解を部分的に確認/修正するための「初心者質問」の種類: 私はいくつかの自動ウェブサイトプロービングを実装したいと思います。私は実際にデータを取得したくありません。以前の仕事から、私はカールを覚えていて、URLの可用性を確認するだけで(これはHTTPレスポンスコード、たとえば200かどうかなど)これはうまく動作します。 タスクも同様にログオンしていますが、動作させることはできません。しばらく実験してWWWで検索したところ、明白な答えは見つかりませんでした。私の希望はここにあります:-)ウェブセッションのカールプロービング

私の考えは、スクリプトを使用して、クッキーとオプション、例えば:

$ curl -s -w "%{http_code}" -o /tmp/tge-HTML.out -b /tmp/tge-cookies -c /tmp/tge-cookies -F "username=bla&passwd=blub&Submit=Login" http://some.url 

(私はPOSTパラメータを決定するためにHTTPfoxを使用して右のそれらを持っていることがほとんど確信しています)

は、それから私は、ファイルを検索/tmp/tge-HTML.out私がログオンしている証拠として「ログアウト」が含まれているかどうか(ログオンしていなくても、私はいつも、さまざまなURLのすべてのテストでHTTP 200を取得しますリード)。

Firefoxでログオンした後、次のURLには... & jsessionid = ...これは当然わかりませんが、私はいくつかのことを試みました。 (!コマンド) - |:カールを呼び出すために二回シェルスクリプトでは、最初からセッションIDを取得し、同様に、2番目のURLに追加します:

$ curl -s -w "%{http_code}" -o /tmp/tge-HTML.out -b /tmp/tge-cookies -c /tmp/tge-cookies -F "username=bla&passwd=blub&Submit=Login" http://some.url 
... extract jsessionid from /tmp/tge-HTML.out ... 
$ curl -s -w "%{http_code}" -o /tmp/tge-HTML.out -b /tmp/tge-cookies -c /tmp/tge-cookies 
    http://some.url/...?jsessionid=... 

しかし、私が試したものは何でも、私はどこにもやったことがなかったです 今の質問:私は上記の例のようにカール・ベースのPOSTを行う場合

  1. 、I は(?通常は)私は定期的にウェブでそれ を見ると同じようにレスポンスとして完全なHTMLページを得るのですかログイン後のブラウザ?

    • 私は間違っているかもしれないもの、仕事にこれを取得することはありませんので、しかし
    • ...本当かのように私には見えますが、その後、簡単なPOSTを行う必要があり、それが「ログアウト」を含める必要がありますか?
  2. 複数のHTTPリクエストを行う必要がある場合は、 そのようなcurlコマンドを使用するという概念はまったく機能しますか? curlが終了すると何が起きますか? ソケットが閉じて、Webサーバー がおそらくセッションを閉じます(そして、私のjsessionidは無効です)?

    • この方法ではうまくいかない場合は、libcurlベースのコンセプトが有効でしょうか?例えば。 phpcurl(ちょうどそれについて読んだが、まだ試したことがない)私は私のPHPスクリプト内でセッションを維持するため、接続/セッションは開いたまま...
    • おそらくサイトがクッキーを使用するかどうかによって異なりますか?
  3. 独自のアイデアを達成するためのより良いアイデアはありますか?理想的にはそれが無い巨大な監視スイート

    いくつかのスクリプトが、 と簡単であるべき多くがあるほとんどの

「依存...」: - |また、おそらく質問は100%正確ではありませんが、ヒントは感謝しています!

RGDS、 TGE

答えて

0

OK :-)、最終的に私はいくつかの進歩を遂げた - 多分それは他の人々を助け... まず、スクリプトベースのアプローチは、少なくともテストケースの一つで、作業を行いますサーバー側でJoomlaを使って(私は後で他のものを試してみる)。第2の相違点

rm -f /tmp/tge-cookies 
HTTP_CODE=$(./curl -s -w "%{http_code}\\n" -o /tmp/tge-HTML-out.1 -b /tmp/tge-cookies -c /tmp/tge-cookies -L ${URL}) 
# Eval HTTP_CODE ... 
Token=`awk '{ if(match($1, "<input") && match($3, "name=\"[a-z0-9]+\"")) 
    { 
    gsub("name=\"", "", $3); 
    gsub("\"", "", $3); 
    if(length($3) == 33) 
    { 
     print $3; 
     exit 0; 
    } 
    } }' /tmp/tge-HTML-out.1` 
HTTP_CODE=$(./curl -L -s -w "%{http_code}\\n" -o /tmp/tge-HTML-out.2 -b /tmp/tge-cookies -c /tmp/tge-cookies -d "username=${User}&passwd=${Pass}&option=login&task=login&${Token}=1&remember=yes&Submit=Login" ${URL}) 
# Eval HTTP_CODE ... 
# Eval /tmp/tge-HTML-out.2 whether containing "Logout" ... 

:私は最初のGETの応答からトークンを抽出し、第二のフォームパラメータに入れて説明した方法と同様に CURL login by script to a Joomla website

:解決への鍵は、このました「-F」を使用しても機能しませんが、「-d」は機能しません。 興味深いことに、POSTのパラメータはHTTPfoxで見られるものとは異なります。

よろしくお願いいたします。 tge

関連する問題