• ベストアンサー

Perlでブラウザのようにクッキーデータ送信して、同じデータを見たい。

クッキーをクライアント側から操作したいのですが、 IEなどブラウザがサイトアクセスした時にどのようにクッキーデータを送っているか知りたいです。 GET / HTTP/1.0\n\n は、わかりますが、クッキーデータはどのタイミングで、どういう形式で送信しているのか、ブラウザのように振舞いたいのですがわかりません。 あるサイトはクッキーを認証として使っているのですが、コマンドラインから情報を取得するperlを書いているのですが、クッキーのため別画面の結果が返ってきます。IEでは正しく見れるのですが、perlからは方法がわからないため、できませんでした。

  • bazax
  • お礼率5% (12/228)
  • CGI
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

ブラウザはあるURLにアクセスする時に、そのサイトに関するcookieを持っていれば、GETする時にcookieも一緒にヘッダに載せてリクエストします。 cookieを持ったサイトへアクセスする時のリクエストヘッダ GET パス HTTP/1.1\n USER-AGENTとかその他のヘッダ Cookie:・・・\n \n このように、最初からcookieを付けてリクエストするか、 パスワード認証の画面が帰ってきたらパスワードをPOSTするとかすればできるんじゃないでしょうか? なお、ブラウザとサーバのやりとりを見るのに私はProxomitronを使ってます。 http://www.pluto.dti.ne.jp/~tengu/proxomitron/

その他の回答 (1)

  • maura
  • ベストアンサー率46% (48/104)
回答No.2

あるサイトがMixiの事でしたら これ使ったほういいですよ。 Mixiアクセス用のLWP::UserAgentモジュール WWW-Mixi-0.48 WWW::Mixiのクックブック http://search.cpan.org/~tsukamoto/WWW-Mixi-0.48/lib/WWW/Mixi/Cookbook.pod ちがったら LWP Cookie でググルと出てきます。

関連するQ&A

  • クッキーのデータ取得

    perlでのクッキーのデータ取得の方法について、ご質問です。 まず、同一のサイトから取得した、クッキーのパスは、/の、Aというクッキーと、Bというクッキーが存在して、 Aというクッキーのコンテンツのみを、 取得したいのですが、可能なのでしょうか? 下記のスクリプトに追加すると、 どういった形式になるのでしょうか? どなたかご教授いただけますでしょうか? よろしくお願いいたします。 &splt; sub splt { @cookdata = split(/;/,$ENV{'HTTP_COOKIE'}); foreach $tmp (@cookdata) { ($youso,$atai) = split(/=/,$tmp); $youso =~ s/ //; $COOKIE{$youso} = $atai; } }

    • ベストアンサー
    • CGI
  • HTTPでフォームを送信したい

    JavaScriptで書かれた認証文字数チェックがある ユーザIDやパスなどの入力フォームを 本来サブミットで送信する内容を HTTPでPOSTまたはGETして、直接cgiにフォーム内容を 送信したいのですがその様なことは可能でしょうか? 可能でしたら方法やその理屈を教えていただけません でしょうか? 理由 通常ブラウザでアクセスするページを 専用のクライアントを作成し通信したいため submit形式のフォームをPOSTかGETで処理したい。

  • クッキーについて

    メールマガジンを解除しようと思ったのですが 解除ページに行くと ~現在、登録情報を処理することができません。 ネットワークの問題、Web サイト トラフィック、またはブラウザの要件に起因している可能性があります。 問題を解決するには、一般的な ID 認証である "クッキー" を受信できるようにブラウザを設定してください。 通常、この設定はブラウザのオプション メニューまたは設定メニューで変更できます。 それでも登録情報を送信できない場合は、しばらくしてからもう一度送信してください。 お手数をおかけして、申し訳ありません~ という表示がでてメルマガを解除できません、いくらプロパティなどを触っても判りませんどうしたらこのクッキーを受信できるようになるのですか?教えてください。

  • ブラウザによるクッキー処理につきまして

    現在、クッキーを利用してログイン~ログアウト等の処理をしていますが ブラウザによって動作が異なるようです。 動作と言いましても特殊な事では無く、ログイン後手操作でログアウトしたらそのままログアウト。 ログイン中でもクッキーの設定時間を過ぎたらログアウト可能にしたいのですが IEはバージョン6以降では特に問題も無く思ったとおりの動きを してくれますが、Firefoxでは(ver3.6.2)手操作での任意のログアウトが出来ません。 具体的には、サンプルソースの様にlogin.phpでクッキーを設定してlogout.phpで クッキーを削除していますが、Firefoxではクッキーが削除されません。 その為、ログイン後 手操作でログアウトしてもFirefoxではログアウト出来ません。 クッキー設定での時間を経過したら、ログアウト出来ます(クッキーも削除されます) ログイン側~ログアウト側 両方とも時間など、いくつかやり方を変えて見ましたが 対策が見えていません。 (ブラウザによる相違があるようでしたのでサンプルソースの様にif文で分けています。) Firefoxでは何か設定のやり方があるのでしょうか。 ご存知の方がいらっしゃいましたらご教授の程お願いします。 ■環境 OS:WindowsXP WEBサーバー:apache2.0 PHP:バージョン5.2 IE:バージョン 6/7 (クッキー許可) Firefox:バージョン 3.6.2 (クッキー許可) //-------------------------------------------- // login.php (省略サンプルソース) // クッキー設定 $userid = 'abcd'; $Agent = getenv( "HTTP_USER_AGENT" ); if (eregi("firefox", $Agent)){ // Firefox //setcookie('login_regist', $userid, time()+1); setcookie('login_regist', $userid, time()+20); }else{ // IE setcookie('login_regist', $userid, time()+20); } //-------------------------------------------- // logout.php (省略サンプルソース) // クッキー削除 $userid = 'abcd'; $Agent = getenv( "HTTP_USER_AGENT" ); if (eregi("firefox", $Agent)){ // Firefox //setcookie('login_regist', $userid, time()-2400); setcookie('login_regist', $userid, time()+0); }else{ // IE setcookie('login_regist', $userid, time() - 2400); }

    • 締切済み
    • PHP
  • 履歴やクッキーを見られないようにするには

    家族で一台のパソコンを使用しているのですが、 インターネットの履歴やクッキーが残るのが嫌なのですが、 家族の中には履歴やクッキーを私の好きなタイミングで削除するのを好ましく思っていないものがおります。 私だけ別のブラウザを使うことを考えたのですが、 家族はIE以外にもFirefoxやOperaやChlomやSafariを使用していて、 主だったブラウザは既に使われております。 Sleipnirは使われていないのですが、 レンダリングエンジンがIEと同じtridentなので、 Sleipnirを使用すると、 IEを使用した家族が私の履歴やクッキーを見ることができるのでしょうか? どうにかして履歴やクッキーを見られないようにするにはどうしたらよいでしょうか

  • CGIでGETで送信するパラメータの最大長が知りたいのです。

    CGIでGETで送信するパラメータの最大長が知りたいのです。 ブラウザ(クライアント)毎に違うのでしょうか、 それとも、CGIはPerlを使っているのですが、サーバー側の仕様になるのでしょうか? あと、index.cgi[ここからパラメータとして扱われる??? ?, &もパラメータサイズに含まれるのでしょうか? 結構長いパラメータをGETで送信しないといけなくて、たとえば携帯やPDA(ザウルスSL-C860)など大丈夫かなと心配しています。 POSTは無制限でしたよね? でも、今回は必ずGETでないといけませんので・・・

    • 締切済み
    • CGI
  • ブラウザ作成に必要な知識

    クッキーの使えるブラウザを作ろうと考えています。テキストブラウザで構いません。できれば簡単な情報収集エージェントとして使いたいです。何を勉強すれば作れるものか、御指南いただけないでしょうか。普段はウィンドウズを使っております。 現在の知識 Perl,HTML: 初級 C,C++,JAVA,Perl/Tk,CGI: 入門 HTTP: ほとんど無し

  • perlでSMPT認証してメールを送信したい。

    こんばんわ。 Perlで一点伺いたいことがございます。 SMTP認証して、メールを送信したいのですが ネット上でサンプルをさがしてきて実際に試したのですが うまくいきません。 どうしたらいでしょうか?以下が実施に動かしているコードです。 #!/perl/perl/bin/perl use strict; use warnings; use CGI::Carp qw(fatalsToBrowser); print"content-type: text/html\r\n\r\n"; print "Hello World!\n"; use Net::SMTP; #SMTPサーバの指定 my $mailhost = 'smtp.gmail.com'; my $mailport = 587; my $mail_username = 'XXX@gmail.com'; my $mail_password = 'パスワード'; my $to_mail = '宛先'; my $from_mail = '送信先'; my $smtp = Net::SMTP->new($mailhost,Port => $mailport); $smtp->auth($mail_username, $mail_password); #メールの送信先 $smtp->mail($from_mail); $smtp->to($to_mail); #メールの内容 $smtp->data(); $smtp->datasend("From: $from_mail\n"); $smtp->datasend("To: $to_mail\n"); $smtp->datasend("Subject: test\n"); $smtp->datasend("\n"); $smtp->datasend("test\n"); #メール内容終わり $smtp->dataend(); #接続を切る。 $smtp->quit; print $smtp; ほぼコピーアンドペーストなのですが、うまくいきません。 とりあえず、newしたオブジェクト $smtpを出力してみると アドレス的なものが表示されます。 Net::SMTP=GLOB(0x7d15ec) ただ、これは認証情報が適当でも出力されるようです。 何度やってもメールは届いていないようなので認証の時点でまちがっているのでしょうか? ただ、認証情報は実際にメールソフトで使っているものなので、間違いないと思うのですが、識者の方よろしくご教授お願いします。

    • ベストアンサー
    • Perl
  • winsockでcgiと通信する方法

    winsockプログラミングでHTTPクライアントを作った (とはいっても、参考サイトからのソースをちょっと改造しただけ) のですが、html形式は表示されるのにcgiは表示できないみたいで困っています。 ソースも書きたいのですが、入りきらないみたいです。 それと、IEのようなブラウザでテキストボックスに何か書いてcgiに送るみたいに cgiに情報を送信する方法も教えていただけたら幸いです。 参考URLでもいいので、どうかよろしくお願いします。

  • Windowsサーバ+Perl +アプリ実行は可能?

    Perlでコマンドを実行したいとき、 Linux/Unixサーバのなら system("コマンド名"); と、できるはずですが、 Windowsサーバ+Perlの場合、サーバにインストールされている プログラム/アプリケーションを実行したりすることは可能でしょうか。 具体的なイメージは ユーザーがブラウザからアクセスすると CGIは、サーバ側にインストールされているExcelを起動して マクロを実行、データをCSV形式ファイルに保存。 CGIは保存したCSV形式のファイルを展開し ブラウザ上で表示。 ということは可能ですか? もし可能ならPerlの書式を教えていただければ うれしいですー。

    • ベストアンサー
    • CGI