|
松井証券のネットストックハイスピードは起動が面倒です。
自動起動ができるソフトがネット上で探せばありますが、株式取引用のコンピュータに知らない個人の作ったソフトウェアを入れるのはセキュリティ的に気が引けます。
ですが、Windows標準で動くスクリプトであれば、ソースコードを見れば怪しいことをしていないのが確認できて使いやすいのではないかと思い、これを作りました。
エラー処理等はしていないので、通信ができない時等はどうなるかわかりませんが、今のところ便利に使えています。
技術者向けの説明
NetStockHispeedはウェブサイトから起動する変わったプログラムですが実際は以下のようになっています
・NSHSはインストールするタイプのプログラム
・だがNSHSを直接起動しても動かない
・.nshsという拡張子に関連付けがされている
・.nshsというファイルをダブルクリックして実行するとその中のキーを用いてアクセスをするようになっている
・ウェブサイトにあるリンクは拡張子が.nshsであるファイルを動的に返している
・結果的にウェブサイトのリンクをクリックすると手元のプログラムが起動する
というわけで自動ログインしてそのキーが入ったファイルを保存して実行しています。
-------------------------------------------------------
'NetStockHispeed自動実行スクリプト
'使い方
'BODY = ...... &clientCD={ユーザーID}&passwd={パスワード}を置き換える
'NetStockHiSpeed.vbsという名前で保存
'ダブルクリック(環境によってはシングルクリック)で実行
'temp.nshsという一時ファイルが生成されます。
URL = "https://www.deal.matsui.co.jp/servlet/ITS/login/MemberLoginEnter"
BODY = "attrFromJsp=/ITS/login/MemberLogin.jsp&clientCD=01234567&passwd=abcdefg"
Function HTTPPost(sUrl, sRequest)
set oHTTP = CreateObject("Microsoft.XMLHTTP")
oHTTP.open "POST", sUrl,false
oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oHTTP.setRequestHeader "Content-Length", Len(sRequest)
oHTTP.send sRequest
HTTPPost = oHTTP.responseText
End Function
Function HTTPGet(sUrl)
set oHTTP = CreateObject("Microsoft.XMLHTTP")
oHTTP.open "GET", sUrl,false
oHTTP.send
HTTPGet = oHTTP.responseText
End Function
Sub FileWrite(fn,str)
set FS = CreateObject("Scripting.FileSystemObject")
set oOUT = FS.OpenTextFile(fn,2,True)
oOUT.Write str
oOUT.close
End Sub
Sub run(fn)
Set WshShell = CreateObject ("Wscript.Shell")
WshShell.Run fn, 10, False
End Sub
' ログインしてセッションキーの取得
html = HTTPPost(URL,BODY)
s = InStr(html, "/servlet/ITS/home/Announce;")
key = mid(html,s + len("/servlet/ITS/home/Announce;"),61)
'セッションキーを渡してNetStockHiSpeedのキーを取得
URL2 = "https://www.deal.matsui.co.jp/ITS/home/RtfClientConnect.jsp;" & key & "?attrSrcKey=null"
keyfile = HTTPGet(URL2)
'保存して実行
FileWrite "temp.nshs",keyfile
run "temp.nshs"
|