「次へ」ボタンを押すという作業を手動でして、その状態をパケットキャプチャします。
そして、それと同じパケットをPOSTするようにしたらどうですか?
以前、adslが不調でモデム(ルータ)を定期的に再起動させたい時に作ったもの(parl)です。
192.168.1.1はadslルータのアドレス。再起動するというボタンを押した際の挙動を再現しただけの手抜きです。
まったく目的は違いますが、WEB画面のボタン押したいわけですからやりたいことは同じようなものですよね?
後はキャプチャですが、全て自動化しようとなさらずに、接続時にキャッシュを取るようにして、キャッシュをあさればよろしいのでは。
use strict;
use Socket;
# 接続先IP
my $host = 192.168.1.1 ;
my $port = getservbyname('http', 'tcp');
my $sock_addr = pack_sockaddr_in($port, $host);
socket(SOCKET, PF_INET, SOCK_STREAM, 0)
or die "ソケットの作成に失敗しました。\n";
connect(SOCKET, $sock_addr)
or die "接続に失敗しました。。\n";
# ファイルハンドル SOCKET をバッファリングしないように。
select(SOCKET); $|=1; select(STDOUT);
# モデムに 再起動リクエスト
print SOCKET "POST /cgi-bin/main.cgi HTTP/1.1\r
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword,\r
Referer: http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=reboot\r
Accept-Language: ja\r
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r
Content-Type: application/x-www-form-urlencoded\r
Accept-Encoding: gzip, deflate\r
Host: 192.168.1.1\r
Content-Length: 55\r
Connection: Keep-Alive\r
Cache-Control: no-Cache-Control\r
Authorization: Basic dXNlcjp1c2Vy\r
\r
mbg_webname=reboot_result&mbg_reboot=%BA%C6%B5%AF%C6%B0\r\n"
お礼
ご返事有り難うございました。 こちらの方法も難しいそうです。