人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SBI証券のバックアップサイトに自動でログインし売買を行うプログラムを作成しています。

ログイン、および単元未満株(S株)の売買には成功したのですが指定単位での株の購入がうまくできません。

使用言語はJavaでDefaultHttpClientを使ってウェブ上で行う手順をトレースして売買をさせようと考えています。

結果を出力して見ると、ログインから銘柄の指定、条件や購入数の指定までは進むことができており、最後の注文確定の部分から進めていないようです(画像参照)。

単元未満株の売買には成功しており、同じ仕組が利用できると思われますが、どうしても通らずお手上げになっています。

同じようなものを作られたことがあるかたがいらっしゃれば、何が問題でどこを修正すればいいのか知恵を頂きたく存じます。


1384262447
●拡大する

●質問者: b2dollar
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● lang_and_engine
●75ポイント ベストアンサー

Webスクレイピングは,HTTPパラメータをベースにしたサイトとの通信やり取りで実装すると,うまくいかなくなる事が多いです。
理由は,そういう自動処理ができないようにサイト側も対策をするからです。

例えば,hiddenでパラメータを埋め込んで,それが送信されていないと不正なアクセスとみなし,このサービスはご利用できません,とだけそっけなく通知する。
あるいは,HTTPヘッダのユーザエージェントなどなどをよく検査して,ボットではなく本物のブラウザがアクセスしていることを検査する,など。

そこで解決策ですが,IEを自動操作するプログラムを組んで対処するのがベストです。
Webアプリの操作はつまるところDOM操作の繰り返しなので,ネットワークプログラミングではすぐに壁に行きあたり,DOMを操作するためにブラウザそのものを立ち上げて自動操作する路線に切り替えることになります。

そのための言語としては,VBA,WSH,UWSCなどがよく使われますね。IE 自動操作 などでググってみてください。

(これ以上の具体的な回答はできません。自動操作を禁じているサイトもたくさんあるので,その幇助にあたる回答はできないのです。)


b2dollarさんのコメント
IEの自動操作と言う考え方は完全に盲点でした。 使用言語が全く未知の分野なのですがどうしても手詰まりになった時の案として 検討したいと思います。

lang_and_engineさんのコメント
世の中のボット系のツールはこの手の路線で作られることが多いですので、早めの乗り換えと習得をお勧めします。ステータスコードを調べるなどの通信プログラミングの路線からは一刻も早く抜け出すことです。サイト側では、不正アクセスの原因を特定できないように作りますから。サイト側が親切に原因を教えてくれるとは期待しないほうがよいです。原因を特定しやすく作ってしまったら、そこを利用してくださいと言わんばかりの行為になりますので…。 で、そういった泥沼に陥らないためには、通信プログラミングではなく、本物のブラウザを動かすことがどうしても必要になるんですよね。そうすればサイトの操作で何か不具合が生じた場合もブラウザの画面上でグラフィカルに原因がわかるので、こういう問題が起きたときにも実装がサクサク進みやすいのです。時間を消耗して手詰まりになる前に再考なさることを強くお勧めしますよ、本当に。 プログラミング習得の手間を避けたいなら、badboyみたいなツール利用の手もありますし。。

lang_and_engineさんのコメント
あと、言語を学ぶ手間もそんなに負担ではありません。「株 自動売買 自作」などでググればすぐにわかりますが、uwscやVBAでそういうロボットの作り方を紹介しているサイトがたくさんありますので。

2 ● gizmo5
●75ポイント

一般的な話ですが referer をチェックしているサイトがあります。
サイトの実装によるので確実ではありませんが 400 Bad Request や 403 Forbidden を返すことが多いように思います。
HttpResponse#getStatusLine() 返ってきているステータスコードを確認してみてください。
もしかするとステータスコードの後の文字列にリクエストを拒否した理由が書いてある可能性もあります。

対処方法としては referer を設定することです。
HttpPost#addHeader() で適切な referer を設定してください。
実際のページ遷移と同じにするのが良いと思いますが、Host までしかチェックしていないサービスも経験したことがあります。


b2dollarさんのコメント
Firefox等で通常通り操作した時のHttpヘッダーのログを取りreferer他を設定してみましたがやはり駄目でした。 エラーページのステータスコードは200で原因を特定できるような情報は得られませんでした。 同じくFirefoxでユーザーエージェントをでたらめな文字列にして操作してみたところ 普通に操作は通るのでユーザーエージェントは見ていないようでした。

3 ● ニコ
●75ポイント

こういったものは使えないですか?
http://techbooster.jpn.org/andriod/application/1801/


4 ● EMURATED
●75ポイント

http://blog.inouetakuya.info/entry/20090402/1238680440
こちらが参考になると思います。


質問者から

自己解決しました。

結論から言うと各画面遷移の間に適当な待機時間を設けてやることで処理が通るようになりました。
画面遷移があまりに早いとエラーを出すような仕組みになっているようです。

ベストアンサーは直接的な解決策ではありませんがuwscが色々と面白い用途がありそうな
ソフトであったので選ばせて頂きました。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ