「ブラウザを直接いじってネット証券にアクセスし、自動的に情報を取得して、予め与えておいた条件が満たされたことをトリガーに、またブラウザを介して、売買の注文を出してsubmitする」プログラムのコード。


自分のそれと比べたいなり。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/09/29 14:23:24
  • 終了:--

回答(2件)

id:kuromaku0103 No.1

kuromaku0103回答回数28ベストアンサー獲得回数02004/09/30 12:30:09

ポイント40pt

ブラウザのソースコードを操作するよりも、URLにあるようなAPI(無料)を使ってプログラムを自作したほうが簡単だと思います。上記URLのAPIはJava言語のAPIで、これを使うと、HTTPだけでなく、たとえHTTPS環境下でも、操作を自動化できます。結果的に、ブラウザのソースを触るよりは簡単に、質問の内容と同じことが実現できる可能性があります。

id:satosu

うい。まったくもっておっしゃるとおり。

httpしか使えないけれども、おっしゃる通り。

ブラウザを直接いじるっていうのは、感覚的にわかりやすいから採用しております。

2004/09/30 20:13:39
id:expansion05 No.2

expansion05回答回数12ベストアンサー獲得回数02004/10/04 11:57:36

ポイント10pt

売り物なのでソースは公開されていませんが、アメリトレードという証券会社のwebプラットフォームを使ったものがあるようです。

id:satosu

ソースは公開されていない

この一言につきます。条件に合いませんねぇ。んなもん普通は公開しないって?気まぐれでだれか公開してるかなぁと思っての質問でした。

2004/10/04 12:25:55
  • id:expansion05
    ETW

    一時的にサーバーがおちててエントリーできなかったのですが、
    イートレのweb発注を独自ソフトで対応するETWというソフトは
    ソース公開されてます。
  • id:expansion05
    ソース

    今はなき証券会社への自動アクセスのコードを見つけましたのでお送りします。

    import java.io.*;
    import java.net.*;
    import java.security.Security;
    import com.sun.net.ssl.*;
    import javax.net.ssl.*;



    /**
    * HttpsPost
    *
    * Simple https-posting engine.
    *
    * @author Andrew B. Gardner <andywocky@yahoo.com>
    */
    public class HttpsPost {
    //
    // MEMBERS
    //
    private String username = null;
    private String password = null;
    private InputStream fileStream = null;
    private HttpsURLConnection uc = null;
    private boolean debug = false; // toggle ssl debugging



    //
    // CONSTRUCTORS
    //
    public HttpsPost() { initSSL(); }
    public HttpsPost( String username, String password ) {
    this.username = username;
    this.password = password;
    initSSL();
    }


    /**
    * Basic HTTP user authentication.
    */
    private String userAuthentication() {
    return Base64.encode( username + ”:” + password );
    }


    /**
    * Set the SSL provider.
    */
    private void initSSL() {
    if (debug == true)
    System.setProperty (”javax.net.debug”, ”all”);
    System.setProperty( ”java.protocol.handler.pkgs”,
    ”com.sun.net.ssl.internal.www.protocol”);
    Security.addProvider( new com.sun.net.ssl.internal.ssl.Provider() );
    }


    /**
    * Make an HTTP1.1 post and return the response.
    *
    * @param url where to post, e.g. ”https://investment.datek.com/”
    * @param msg string to post
    * @return String webserver response page
    */
    public String postAuthenticated( String url, String post ) throws Exception {
    StringBuffer sb = new StringBuffer();
    try {
    // configure the URL post
    URL remotesite = new URL( url );
    uc = (HttpsURLConnection) remotesite.openConnection();
    uc.setRequestProperty( ”Authorization”, ”Basic ” + userAuthentication() );
    uc.setRequestProperty( ”User-Agent”, ”HttpsPost 1.0” );
    uc.setRequestMethod( ”POST”);
    uc.setRequestProperty( ”Content-Type”, ”application/x-www-form-urlencoded” );

    uc.setDoInput( true );
    uc.setDoOutput( true );
    uc.setUseCaches( false );

    // send the request
    DataOutputStream out = new DataOutputStream( uc.getOutputStream() );
    out.writeBytes( post );
    out.flush ();
    out.close ();

    // read the response
    BufferedReader in = new BufferedReader( new InputStreamReader(uc.getInputStream()) );
    String inputLine;
    while ( (inputLine = in.readLine()) != null )
    sb.append(inputLine);
    in.close();
    uc.disconnect();
    }
    catch ( Exception e ) {
    e.printStackTrace();
    throw( e );
    }
    return sb.toString();
    }



    //
    // ACCESSORS
    //
    public void setUsername(String username) { this.username = username; }
    public void setPassword(String password) { this.password = password; }
    public String getUsername() { return username; }



    //
    // MAIN
    //

    /**
    * Usage:
    *
    * java HttpsPost url post username password
    *
    *
    * To fetch a portfolio...
    *
    * java HttpsPost ”https://investment.datek.com”
    * ”__chx=REPORT%20%20&rpos=Portfolio” myname mypassword > portfolio.htm
    *
    * To fetch a quote...
    *
    * java HttpsPost ”https://investment.datek.com”
    * ”__chx=QUOTE%20%20%20&qsymbol=BLS&getquote=Get%20Quote&userid=GARDN69838” myname mypassword > quote.htm
    *
    *
    */
    public static void main( String args[] ) {
    if (args.length != 4) {
    System.out.println(”Usage:”);
    System.out.println(” java HttpsPost url post username password”);
    }
    else {
    HttpsPost me = new HttpsPost( args[2], args[3] );
    try {
    String response = me.postAuthenticated( args[0], args[1] );
    System.out.println( response );
    }
    catch (Exception e) {
    System.out.println( e.getMessage() );
    System.exit(1);
    }
    }
    System.exit(0);
    }
    }

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません