Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
ラベル HTTP の投稿を表示しています。 すべての投稿を表示
ラベル HTTP の投稿を表示しています。 すべての投稿を表示

2010年5月24日月曜日

Firefox のアドオン HTTP Resource Test でリクエストを送信

1. Telnet で HTTP メソッドをリクエスト

Telnet で HTTP メソッドをリクエストするには、コマンドラインで

telnet ホスト名 80

としてホストに接続してから、リクエストを送信する。

Windows Vista で標準の Telnet クライアントを使うには、

[コントロールパネル] - [プログラムと機能] へ進み、左側に表示されるタスクから「Windows の機能の有効化または無効化」を選択し、「Telnet クライアント」にチェック

(へーいち の うぇぶろぐ | Windows Vista で TELNET コマンドを使う より)

Telnet を起動したら

? , set ?

などで利用できるコマンドを確認。

 

2. Firefox のアドオン HTTP Resource Test

Firefox を使っている場合、アドオン HTTP Resource Test により、リクエストを送信できる。

アドオンをインストールしたら、

  • メニューより 「ツール > HTTP Resource Test

を選択。

例えば、フォームから POST メソッドでリクエストを投げる動作をシミュレートしたい場合、、

  1. Resource の URI に POST 先のアドレスを入力
  2. Method で POST を選択
  3. Client Request の Representation に 「パラメータ値=値&パラメータ=値&…」 を入力
  4. Content-Type で application/x-www-form-urlencoded を選択
  5. Submit ボタンを押す

img05-24-2010[3]

 

3. Firebug でリクエストのパラメータと値を取得

HTTP Resource Test で送信する Client Request における「パラメータと値」は、予めブラウザでフォームの入力と送信をして把握しておく必要がある。

そのためには、フォームでリクエストを送信する前に Firebug を起動しておく。フォームで、実際にリクエストを送信したら、

  1. 「接続」タブにおいて、POST 先の URL に相当する部分をクリックして展開する。
  2. POST タブ内の「パラメータ」の下にある「ソース」を確認し、「パラメータと値」に対応したテキストをコピーする。

この値を Client Request で利用する。

img05-24-2010[2][6]

 

4. その他

2009年7月20日月曜日

PHP でセッションの利用 – session_start()

PHP でセッションを利用するには session_start() を使う。

しかし、次のコードを実行するとエラーが発生。

こんにちは
<?php
session_start();
?>

結果は、

こんにちは
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:XXXXXX\test.php:2) in C:XXXXX\test.php on line 3

これは 初めてのPHP5 (p164) によると、

HTML の前はヘッダを含む応答の一部です。ヘッダは画面には表示されませんが、Web クライアントからサーバへの命令や情報になります。…

Web サーバから Web クライアントへの応答ヘッダはすべて、応答の始めにあるべきです。… 一度、本文が送られると、たとえそれが 1 行であっても、それ以上ヘッダが送られることはありません。…

setcookie() や session_start() のような関数は応答にヘッダを追加します。追加されたヘッダが適切に送られるためには、出力の開始前に追加されなければなりません。…

ブランク行であっても、<?php ?> タグの外側には何もないことをチェックしましょう。

上記のヘッダとは[Studying HTTP] HTTP Header Fields による、

クライアントとサーバは、HTTP ヘッダを使ってデータやソフトウェア自身の情報をやりとりしていきます。 HTTP/0.9 では、データの取得のみを目的としていたので、HTTP ヘッダというものは存在しませんでした。しかし、WWW が活用され始め、そのリソースに関連する情報 (例えば、返されるリソースのサイズやその更新時刻等) や、クライアント側の情報 (例えば、ユーザエージェントの種類やそれを参照するリソースの URL 等) をやりとりしたいと思うようになり、実際のリソースとは別のメタ (外部) 情報を扱うものとして、HTTP ヘッダが開発されたのです。

PHP: session_start – Manual の注意をよく読むと、

注意: クッキーに基づくセッションを使用している場合、ブラウザに何か出力を行う前に session_start() をコールする必要があります。

呼出すタイミングには注意が必要。状態を考えてコーディングしないといけないのはやっぱ面倒だなぁ。。 (+_+)

 

参考

2008年5月22日木曜日

Python で HTTP の POST メソッドを送信 - 掲示板の迷惑投稿を一括削除

1. おちゃのこネットの掲示板の投稿を、一括で削除したい

友人が、おちゃのこネット のサービスを利用して、ネットショップを運営している。おちゃのこネットでは、ショップごとに掲示板を持てる。掲示板を使っていて問題となることは、迷惑投稿がたくさん入ること。

検索してみると、多くのショップがやられているようだ。

投稿を削除するには、

ショップの掲示板の一番下に
「以下のフォームから自分の投稿記事を修正・削除することができます」という
削除/修正用のBOXがありますので

1,処理の区分は「削除」に選択して下さい。
2,記事Noは削除されたい記事番号を入力下さい。
3,パスワードの箇所は、ショップマネージャー(管理画面)のログインPWを入れて送信ボタンを押してください。

おちゃのこサポートくらぶ - Q:掲示板(BBS)にショップとは無関係の記事があるので削除したいのですが、どうすればいいでしょうか? より)

管理画面からも投稿を削除できる。しかし、個別に削除するのは面倒なので、できればスクリプトで一括削除したい。

 

2. 削除用のスクリプト

Python を使い、urllib2 モジュールを利用する。

ソースコードは、urllib2モジュール - ひきメモ を参考にした。

import urllib
import urllib2

# 掲示板のアドレス
url = 'http://XXXXXXXX.ocnk.net/bbs'

# パスワード
passwd = 'XXXXXXXX'

# 削除したい記事の No.
#
# ex. 記事 No.1,3,5 を削除 codes = [1,3,5]
#     記事 No.1 ~ 10 を削除 codes = range(1,11)
codes = []
#codes = range()


# 指定された No. の投稿を削除する
def delpost(code, passwd):
    params = {
        'update'        : 'true',
        'mode'          : 'del',
        'code'          : code,
        'password_bbs'  : passwd
    }
    urllib2.urlopen(url,
                    urllib.urlencode(params))

for code in codes:
    delpost(code, passwd)

掲示板のアドレスと、削除用のパスワードを指定し、削除対象の投稿の No. を入れて実行する。

 

参考