昨夜の続きって、まだ寝てないんだけど…(笑)
昨夜の続きって、まだ寝てないんだけど…(笑)
#!/usr/bin/ruby -Ke require "net/http" http=Net::HTTP.new('www1.iiii.jjj.co.jp') res,=http.post("/RS1/cgi-bin/RS1P001.cgi","MaxCount=10000&PageCount=50&SearchKind=1&TempName=_NO_TEXT_&MaxPage=0&DispPage=0&HitCount=0&Reserve1=_NO_TEXT_&Reserve2=_SETUP_&Reserve3=_NO_TEXT_&Ban_Sihou=0&Ban_BanSyu=0&BanBan01=_NO_TEXT_&BanBan02=_NO_TEXT_&BanBan03=_NO_TEXT_&BanBan04=_NO_TEXT_&BanBan05=_NO_TEXT_&BanBan06=_NO_TEXT_&BanBan07=_NO_TEXT_&BanBan08=_NO_TEXT_&BanBan09=_NO_TEXT_&BanBan10=_NO_TEXT_&BanBan11=_NO_TEXT_&BanBan12=_NO_TEXT_&BanBan13=_NO_TEXT_&BanBan14=_NO_TEXT_&BanBan15=_NO_TEXT_&BanBan16=_NO_TEXT_&BanBan17=_NO_TEXT_&BanBan18=_NO_TEXT_&BanBan19=_NO_TEXT_&BanBan20=_NO_TEXT_&Han_Sihou=0&Han_Sitei=0&Han_SDay=_NO_TEXT_&Han_EDay=_NO_TEXT_&DispNumber=_NO_TEXT_&ListPaging=_NO_TEXT_&DispPaging=_NO_TEXT_&Yobi01=_NO_TEXT_&ListURL=_NO_TEXT_&SinListTotal=_NO_TEXT_&SinListDisp=_NO_TEXT_&SinListMax=_NO_TEXT_&SinDisp=_NO_TEXT_&TouListTotal=_NO_TEXT_&TouListDisp=_NO_TEXT_&TouListMax=_NO_TEXT_&TouDisp=_NO_TEXT_&Han_SSDay=_NO_TEXT_&Han_SEDay=_NO_TEXT_") res,=http.post("/RS1/cgi-bin/RS1P003.cgi", "MaxCount=10000&PageCount=50&SearchKind=1&TempName=_NO_TEXT_&MaxPage=0&DispPage=0&HitCount=0&Reserve1=_NO_TEXT_&Reserve2=_CHANGE_&Reserve3=_NO_TEXT_&Ban_Sihou=0&Ban_BanSyu=1&BanBan01=H07-123456&BanBan02=_NO_TEXT_&BanBan03=_NO_TEXT_&BanBan04=_NO_TEXT_&BanBan05=_NO_TEXT_&BanBan06=_NO_TEXT_&BanBan07=_NO_TEXT_&BanBan08=_NO_TEXT_&BanBan09=_NO_TEXT_&BanBan10=_NO_TEXT_&BanBan11=_NO_TEXT_&BanBan12=_NO_TEXT_&BanBan13=_NO_TEXT_&BanBan14=_NO_TEXT_&BanBan15=_NO_TEXT_&BanBan16=_NO_TEXT_&BanBan17=_NO_TEXT_&BanBan18=_NO_TEXT_&BanBan19=_NO_TEXT_&BanBan20=_NO_TEXT_&Han_Sihou=0&Han_Sitei=0&Han_SDay=_NO_TEXT_&Han_EDay=_NO_TEXT_&DispNumber=_NO_TEXT_&ListPaging=0&DispPaging=_NO_TEXT_&Yobi01=_NO_TEXT_&ListURL=_NO_TEXT_&SinListTotal=_NO_TEXT_&SinListDisp=_NO_TEXT_&SinListMax=_NO_TEXT_&SinDisp=_NO_TEXT_&TouListTotal=_NO_TEXT_&TouListDisp=_NO_TEXT_&TouListMax=_NO_TEXT_&TouDisp=_NO_TEXT_&Han_SSDay=_NO_TEXT_&Han_SEDay=_NO_TEXT_", "Cookie"=>res['set-cookie'].gsub(" ; path=[^,]+(, |$)",",").gsub(",$","")) r,=http.get(/<frame name="bottom1" src="([^"]+)" scrolling="auto">/.match(res.body)[1],"Cookie"=>res['set-cookie'].gsub(" ; path=[^,]+(, |$)",",").gsub(",$","")) r.each{|n,v|puts "|#{n}|#{v}|"} puts r.body
というコードから
last-modified | Sun, 29 Sep 2002 16:21:13 GMT |
connection | close |
content-type | text/html |
etag | W/"1c09-1820-3d972879" |
date | Sun, 29 Sep 2002 16:21:14 GMT |
server | Hitachi Web Server 01-00 (Unix) |
content-length | 6176 |
accept-ranges | bytes |
<HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=x-sjis"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <TITLE></TITLE> <script language="JavaScript"> <!-- function GoNext(disp,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51) { document.NextWinPara.elements[0].value = p1; document.NextWinPara.elements[1].value = p2; document.NextWinPara.elements[2].value = p3; document.NextWinPara.elements[3].value = p4; document.NextWinPara.elements[4].value = p5; document.NextWinPara.elements[5].value = p6; document.NextWinPara.elements[6].value = p7; document.NextWinPara.elements[7].value = p8; document.NextWinPara.elements[8].value = p9; document.NextWinPara.elements[9].value = p10; document.NextWinPara.elements[10].value = p11; document.NextWinPara.elements[11].value = p12; document.NextWinPara.elements[12].value = p13; document.NextWinPara.elements[13].value = p14; document.NextWinPara.elements[14].value = p15; document.NextWinPara.elements[15].value = p16; document.NextWinPara.elements[16].value = p17; document.NextWinPara.elements[17].value = p18; document.NextWinPara.elements[18].value = p19; document.NextWinPara.elements[19].value = p20; document.NextWinPara.elements[20].value = p21; document.NextWinPara.elements[21].value = p22; document.NextWinPara.elements[22].value = p23; document.NextWinPara.elements[23].value = p24; document.NextWinPara.elements[24].value = p25; document.NextWinPara.elements[25].value = p26; document.NextWinPara.elements[26].value = p27; document.NextWinPara.elements[27].value = p28; document.NextWinPara.elements[28].value = p29; document.NextWinPara.elements[29].value = p30; document.NextWinPara.elements[30].value = p31; document.NextWinPara.elements[31].value = p32; document.NextWinPara.elements[32].value = p33; document.NextWinPara.elements[33].value = p34; document.NextWinPara.elements[34].value = p35; document.NextWinPara.elements[35].value = p36; document.NextWinPara.elements[36].value = disp; document.NextWinPara.elements[37].value = 0; document.NextWinPara.elements[38].value = 0; document.NextWinPara.elements[39].value = p40; document.NextWinPara.elements[40].value = p41; document.NextWinPara.elements[41].value = p42; document.NextWinPara.elements[42].value = p43; document.NextWinPara.elements[43].value = p44; document.NextWinPara.elements[44].value = p45; document.NextWinPara.elements[45].value = p46; document.NextWinPara.elements[46].value = p47; document.NextWinPara.elements[47].value = p48; document.NextWinPara.elements[48].value = p49; document.NextWinPara.elements[49].value = p50; document.NextWinPara.elements[50].value = p51; document.NextWinPara.submit() } //--> </script> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000066" VLINK="#808080" ALINK="#FF0000" TOPMARGIN="0"> <FORM NAME="NextWinPara" METHOD="post" ACTION="/RS1/cgi-bin/RS1P005.cgi" target="_top"> <INPUT TYPE="hidden" NAME="MaxCount"> <INPUT TYPE="hidden" NAME="PageCount"> <INPUT TYPE="hidden" NAME="SearchKind"> <INPUT TYPE="hidden" NAME="TempName"> <INPUT TYPE="hidden" NAME="MaxPage"> <INPUT TYPE="hidden" NAME="DispPage"> <INPUT TYPE="hidden" NAME="HitCount"> <INPUT TYPE="hidden" NAME="Reserve1"> <INPUT TYPE="hidden" NAME="Reserve2"> <INPUT TYPE="hidden" NAME="Reserve3"> <INPUT TYPE="hidden" NAME="Ban_Sihou"> <INPUT TYPE="hidden" NAME="Ban_BanSyu"> <INPUT TYPE="hidden" NAME="BanBan01"> <INPUT TYPE="hidden" NAME="BanBan02"> <INPUT TYPE="hidden" NAME="BanBan03"> <INPUT TYPE="hidden" NAME="BanBan04"> <INPUT TYPE="hidden" NAME="BanBan05"> <INPUT TYPE="hidden" NAME="BanBan06"> <INPUT TYPE="hidden" NAME="BanBan07"> <INPUT TYPE="hidden" NAME="BanBan08"> <INPUT TYPE="hidden" NAME="BanBan09"> <INPUT TYPE="hidden" NAME="BanBan10"> <INPUT TYPE="hidden" NAME="BanBan11"> <INPUT TYPE="hidden" NAME="BanBan12"> <INPUT TYPE="hidden" NAME="BanBan13"> <INPUT TYPE="hidden" NAME="BanBan14"> <INPUT TYPE="hidden" NAME="BanBan15"> <INPUT TYPE="hidden" NAME="BanBan16"> <INPUT TYPE="hidden" NAME="BanBan17"> <INPUT TYPE="hidden" NAME="BanBan18"> <INPUT TYPE="hidden" NAME="BanBan19"> <INPUT TYPE="hidden" NAME="BanBan20"> <INPUT TYPE="hidden" NAME="Han_Sihou"> <INPUT TYPE="hidden" NAME="Han_Sitei"> <INPUT TYPE="hidden" NAME="Han_SDay"> <INPUT TYPE="hidden" NAME="Han_EDay"> <INPUT TYPE="hidden" NAME="DispNumber"> <INPUT TYPE="hidden" NAME="ListPaging"> <INPUT TYPE="hidden" NAME="DispPaging"> <INPUT TYPE="hidden" NAME="Yobi01"> <INPUT TYPE="hidden" NAME="ListURL"> <INPUT TYPE="hidden" NAME="SinListTotal"> <INPUT TYPE="hidden" NAME="SinListDisp"> <INPUT TYPE="hidden" NAME="SinListMax"> <INPUT TYPE="hidden" NAME="SinDisp"> <INPUT TYPE="hidden" NAME="TouListTotal"> <INPUT TYPE="hidden" NAME="TouListDisp"> <INPUT TYPE="hidden" NAME="TouListMax"> <INPUT TYPE="hidden" NAME="TouDisp"> <INPUT TYPE="hidden" NAME="Han_SSDay"> <INPUT TYPE="hidden" NAME="Han_SEDay"> </FORM> <TABLE BORDER="0" width="100%"> <TR> <TD ALIGN="left" NOWRAP>1 - 1 / 1</TD> </TR> </TABLE> <TABLE BORDER="0" width="100%"> <TR> <TD ALIGN="CENTER" VALIGN="TOP" width="5%" NOWRAP><STRONG>項番</STRONG></TD> <TD ALIGN="left" VALIGN="TOP" width="10%" NOWRAP><STRONG>△番号</STRONG></TD> <TD ALIGN="left" VALIGN="TOP" width="85%"><STRONG>◇番号</STRONG></TD> </TR> <TR> <TD ALIGN="CENTER" VALIGN="TOP" width="5%" NOWRAP>1</TD> <TD ALIGN="left" VALIGN="TOP" width="10%" NOWRAP><A HREF ="javascript:GoNext('1','10000','50','1','/IPDL/RS1/result/001/wAAAa03185','1','1','1','_NO_TEXT_','_CHANGE_','_NO_TEXT_','0','1','H07-123456','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','0','0','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','0','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_','_NO_TEXT_')"> H06-206775</a></TD> <TD ALIGN="left" VALIGN="TOP" width="85%">H07-123456</TD> </TR> </TABLE> </BODY> </HTML>
という結果を得た。やっとクッキーから開放された。が、どうしろっていうんだ(涙)
やっと気がついたんだが、相手はjavaのアプリケーションサーバだなゥリavascriptと組み合わせるだけでこんなにも複雑になるんだなー保守料金が高いのも肯けると妙に納得してみたりして(笑)
しかし、今度はsubmitの文字列をjavascriptの引数で生成してる気配がゥy出来ないかなあ?と眺めてみることにする。
面倒なのでjavascriptでも書いているとおり
puts r.body.gsub("ACTION="","ACTION="http://www1.iiii.jjj.co.jp").gsub("METHOD="post"","METHOD="get"")
とやると結果URLとして
http://www1.iiii.jjj.co.jp/RS1/cgi-bin/RS1P005.cgi?MaxCount=10000&PageCount=50&SearchKind=1&TempName=%2FIPDL%2FRS1%2Fresult%2F006%2FwAAAa15945&MaxPage=1&DispPage=1&HitCount=1&Reserve1=_NO_TEXT_&Reserve2=_CHANGE_&Reserve3=_NO_TEXT_&Ban_Sihou=0&Ban_BanSyu=1&BanBan01=H07-123456&BanBan02=_NO_TEXT_&BanBan03=_NO_TEXT_&BanBan04=_NO_TEXT_&BanBan05=_NO_TEXT_&BanBan06=_NO_TEXT_&BanBan07=_NO_TEXT_&BanBan08=_NO_TEXT_&BanBan09=_NO_TEXT_&BanBan10=_NO_TEXT_&BanBan11=_NO_TEXT_&BanBan12=_NO_TEXT_&BanBan13=_NO_TEXT_&BanBan14=_NO_TEXT_&BanBan15=_NO_TEXT_&BanBan16=_NO_TEXT_&BanBan17=_NO_TEXT_&BanBan18=_NO_TEXT_&BanBan19=_NO_TEXT_&BanBan20=_NO_TEXT_&Han_Sihou=0&Han_Sitei=0&Han_SDay=_NO_TEXT_&Han_EDay=_NO_TEXT_&DispNumber=1&ListPaging=0&DispPaging=0&Yobi01=_NO_TEXT_&ListURL=_NO_TEXT_&SinListTotal=_NO_TEXT_&SinListDisp=_NO_TEXT_&SinListMax=_NO_TEXT_&SinDisp=_NO_TEXT_&TouListTotal=_NO_TEXT_&TouListDisp=_NO_TEXT_&TouListMax=_NO_TEXT_&TouDisp=_NO_TEXT_&Han_SSDay=_NO_TEXT_&Han_SEDay=_NO_TEXT_
を得ることができた。
これから以下のことが推測できる
セッションID | TempName=%2FIPDL%2FRS1%2Fresult%2F006%2FwAAAa15945 |
四法 | Ban_Sihou=0 |
種別 | Ban_BanSyu=1 |
願番 | BanBan01=H07-123456 |
なあんだ、途中までさっきのスクリプト使って得たセッションIDをはめればいいだけか。(多分)
暇つぶしにはいいパズルだなあ。(笑)
んー引数が違うな。
ということで何度か引数を出力
http://www1.iiii.jjj.co.jp/RS1/cgi-bin/RS1P005.cgi?MaxCount=10000&PageCount=50&SearchKind=1&TempName=%2FIPDL%2FRS1%2Fresult%2F042%2FwAAAa25056&MaxPage=1&DispPage=1&HitCount=1&Reserve1=_NO_TEXT_&Reserve2=_CHANGE_&Reserve3=_NO_TEXT_&Ban_Sihou=0&Ban_BanSyu=1&BanBan01=H07-123456&BanBan02=_NO_TEXT_&BanBan03=_NO_TEXT_&BanBan04=_NO_TEXT_&BanBan05=_NO_TEXT_&BanBan06=_NO_TEXT_&BanBan07=_NO_TEXT_&BanBan08=_NO_TEXT_&BanBan09=_NO_TEXT_&BanBan10=_NO_TEXT_&BanBan11=_NO_TEXT_&BanBan12=_NO_TEXT_&BanBan13=_NO_TEXT_&BanBan14=_NO_TEXT_&BanBan15=_NO_TEXT_&BanBan16=_NO_TEXT_&BanBan17=_NO_TEXT_&BanBan18=_NO_TEXT_&BanBan19=_NO_TEXT_&BanBan20=_NO_TEXT_&Han_Sihou=0&Han_Sitei=0&Han_SDay=_NO_TEXT_&Han_EDay=_NO_TEXT_&DispNumber=1&ListPaging=0&DispPaging=0&Yobi01=_NO_TEXT_&ListURL=_NO_TEXT_&SinListTotal=_NO_TEXT_&SinListDisp=_NO_TEXT_&SinListMax=_NO_TEXT_&SinDisp=_NO_TEXT_&TouListTotal=_NO_TEXT_&TouListDisp=_NO_TEXT_&TouListMax=_NO_TEXT_&TouDisp=_NO_TEXT_&Han_SSDay=_NO_TEXT_&Han_SEDay=_NO_TEXT_ http://www1.iiii.jjj.co.jp/RS1/cgi-bin/RS1P005.cgi?MaxCount=10000&PageCount=50&SearchKind=1&TempName=%2FIPDL%2FRS1%2Fresult%2F043%2FwAAAa25295&MaxPage=1&DispPage=1&HitCount=1&Reserve1=_NO_TEXT_&Reserve2=_CHANGE_&Reserve3=_NO_TEXT_&Ban_Sihou=0&Ban_BanSyu=1&BanBan01=H07-123456&BanBan02=_NO_TEXT_&BanBan03=_NO_TEXT_&BanBan04=_NO_TEXT_&BanBan05=_NO_TEXT_&BanBan06=_NO_TEXT_&BanBan07=_NO_TEXT_&BanBan08=_NO_TEXT_&BanBan09=_NO_TEXT_&BanBan10=_NO_TEXT_&BanBan11=_NO_TEXT_&BanBan12=_NO_TEXT_&BanBan13=_NO_TEXT_&BanBan14=_NO_TEXT_&BanBan15=_NO_TEXT_&BanBan16=_NO_TEXT_&BanBan17=_NO_TEXT_&BanBan18=_NO_TEXT_&BanBan19=_NO_TEXT_&BanBan20=_NO_TEXT_&Han_Sihou=0&Han_Sitei=0&Han_SDay=_NO_TEXT_&Han_EDay=_NO_TEXT_&DispNumber=1&ListPaging=0&DispPaging=0&Yobi01=_NO_TEXT_&ListURL=_NO_TEXT_&SinListTotal=_NO_TEXT_&SinListDisp=_NO_TEXT_&SinListMax=_NO_TEXT_&SinDisp=_NO_TEXT_&TouListTotal=_NO_TEXT_&TouListDisp=_NO_TEXT_&TouListMax=_NO_TEXT_&TouDisp=_NO_TEXT_&Han_SSDay=_NO_TEXT_&Han_SEDay=_NO_TEXT_ http://www1.iiii.jjj.co.jp/RS1/cgi-bin/RS1P005.cgi?MaxCount=10000&PageCount=50&SearchKind=1&TempName=%2FIPDL%2FRS1%2Fresult%2F044%2FwAAAa25424&MaxPage=1&DispPage=1&HitCount=1&Reserve1=_NO_TEXT_&Reserve2=_CHANGE_&Reserve3=_NO_TEXT_&Ban_Sihou=0&Ban_BanSyu=1&BanBan01=H07-123456&BanBan02=_NO_TEXT_&BanBan03=_NO_TEXT_&BanBan04=_NO_TEXT_&BanBan05=_NO_TEXT_&BanBan06=_NO_TEXT_&BanBan07=_NO_TEXT_&BanBan08=_NO_TEXT_&BanBan09=_NO_TEXT_&BanBan10=_NO_TEXT_&BanBan11=_NO_TEXT_&BanBan12=_NO_TEXT_&BanBan13=_NO_TEXT_&BanBan14=_NO_TEXT_&BanBan15=_NO_TEXT_&BanBan16=_NO_TEXT_&BanBan17=_NO_TEXT_&BanBan18=_NO_TEXT_&BanBan19=_NO_TEXT_&BanBan20=_NO_TEXT_&Han_Sihou=0&Han_Sitei=0&Han_SDay=_NO_TEXT_&Han_EDay=_NO_TEXT_&DispNumber=1&ListPaging=0&DispPaging=0&Yobi01=_NO_TEXT_&ListURL=_NO_TEXT_&SinListTotal=_NO_TEXT_&SinListDisp=_NO_TEXT_&SinListMax=_NO_TEXT_&SinDisp=_NO_TEXT_&TouListTotal=_NO_TEXT_&TouListDisp=_NO_TEXT_&TouListMax=_NO_TEXT_&TouDisp=_NO_TEXT_&Han_SSDay=_NO_TEXT_&Han_SEDay=_NO_TEXT_
あれ?あってるな。
わかった、クッキーはpath=で有効になったままだ。ということですね。(涙)
と、いうことは2回クッキーが送られてきてるからそれのマージゥ哨ゥもうやめ、寝る。
おはよう。
cookie=Hash.new("") res['set-cookie'].gsub(' ','').split(',').map{|b|/^([^;]+);/.match(b)[1].scan(/^([^=]+)=(.+)$/){|h,b|cookie[h]=b}}
にてpathもexpiresもdomainもsecureも無視したクッキーを連想配列cookieに入れることができる。常にこのルーチンを繰り返せばクッキーは最新になると、おもう。
やっぱ、class Cookieがいるなあ。HTTP::にオーバーライドすると使い勝手がよさそうだ。(面倒だけど。)cookie参照のこと。
と、いうことで、軟着陸でクッキーを食べて吐き出す技術を担保したので
cookieID=31,startTIME=1033379786,endTIME=1033379786 cookieID=31,startTIME=1033379786,endTIME=1033379787
connection | close |
content-type | text/html |
date | Mon, 30 Sep 2002 09:56:27 GMT |
server | Hitachi Web Server 01-00 (Unix) |
set-cookie | endTIME=1033379787 ; path=/RS1/cgi-bin/ |
transfer-encoding | chunked |
<html> <head> <title>基本項目詳細フレーム</title> <meta http-equiv="Content-Type" content="text/html; charset=x-sjis"> <meta name="GENERATOR" content="Microsoft FrontPage 3.0"> </head> <frameset rows="14%,76%,10%"> <frame name="header" scrolling="no" target="main" src="/RS1/result/031/wAAAa02718kihon_header.htm"> <frame name="main" src="/RS1/result/031/wAAAa02718deteal_kihon.htm"> <frame name="header2" scrolling="no" target="main" src="/RS1/result/031/wAAAa02718kihon_header2.htm"> <noframes> <p>このページにはフレームが使用されていますが、お使いのブラウザではサポートされていません。</p> </noframes> </frameset> </html>
という結果を得た。
ターゲットは
<frame name="main" src="/RS1/result/031/wAAAa02718deteal_kihon.htm">
だから、これにて完了のはずゥAコードはこれ
結果HTML
で、cgi化してみた。