3

私は、ソーシャル ネットワーク上のユーザーと対話するプログラムに取り組んでいます。Web 通信のほとんどまたはすべてを処理するツールが欲しい

私の仕事には、サイトへのログイン、投稿の閲覧、返信の送信、個人的なメッセージが含まれます。

私は当初、ソケット コードで必要な対話を処理できると考えていました。最初の単一実行ケースは正常に実行されます (ログイン、コンテンツの投稿、問い合わせへの応答などは可能です) が、すべてを一緒に実行しようとしても機能しません (サーバーが要求を認識しない、その他のさまざまなエラー)。私は非常に貧弱な Cookie 追跡を行っています。SSL 通信用にソケットを 80 から 443 に切り替えています。ソーシャル ネットワーク サーバーに送信する独自​​のパケットを生成しています。深さ。Cookie の追跡、SSL 通信の処理、一般的な通信の問題の処理などを行う統合ソリューションを希望します。基本的に、ボタンの X、Y 座標を指定できればよいのにと思います (または、ページからボタンのリストを取得して、必要なボタンを見つけます)。 、

使用できる Java モックブラウザがあるかどうかを知りたいです。つまり、ページ上のテキスト ボックスのハンドルを取得し、ログイン情報を入力して、ログイン手順を実行できます (モック ブラウザは、すべての Cookie を処理し、個々のパケットなどを処理します)。

私の目標は、自分のコンピューターで実行できるプログラムを作成し、自分の側で重要な入力を必要とせずにソーシャル ネットワーク上のユーザーと対話できるようにすることです (プログラムが Firefox を独占して、自分のシステムで Firefox を使用できないようにしたくありません)。 )

コンテキストのために、私は典型的なhtmlページ呼び出しとカスタムパケット呼び出しも送信しています(そして結果を解析しています)

ご協力いただきありがとうございます

4

3 に答える 3

1

次の 2 つの方法のいずれかを使用することをお勧めします。

オプション 1: Apache Http Components Library を使用します。これは、フォーム データを Web サーバーに送信するのに非常に使いやすいことがわかりました。SSL と Cookie をサポートしていますが、私はそれを使用していません。私が抱えている唯一の問題は、プロキシサーバーを介して通信できないように見えることです。これについて私が投稿した質問を参照してください。 しかし、プロキシを経由しない限り、私はライブラリに熱烈な推奨を与え、上記のリンクに投稿したコードは、それがいかに簡単に使用できるかを示しています. フォーム データを Web サーバーに送信するコードの例を次に示します。

import org.apache.http.*;
import org.apache.http.client.*;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.client.methods.*;  //HttpHead, HttpPut, HttpGet, etc...
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.entity.*;
import org.apache.http.impl.client.SystemDefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public static void sendForm(String user, String val) throws IOException {    
    List<NameValuePair> formparams = new ArrayList<NameValuePair>();
    formparams.add(new BasicNameValuePair("user", user));
    formparams.add(new BasicNameValuePair("message", val));
    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8");
    String uri = "http://theServer.com";
    HttpPost httppost = new HttpPost(uri);  
    HttpClient httpclient = new SystemDefaultHttpClient();
    HttpResponse response = httpclient.execute(httppost);
    response.getStatusLine().toString() + "\n" +
    EntityUtils.toString(response.getEntity()));
    System.out.println(EntityUtils.toString(response.getEntity()));       
}

オプション 2: Web ビューと呼ばれる JavaFX に付属する完全に機能する Web ブラウザーがあります。プログラムで操作できます。これについては、 Java Spotlight Podcastの最近の記事で取り上げました。

于 2012-07-05T23:44:39.947 に答える
0

env.rhino.js を Java アプリに埋め込むことができます。

env.js は、「スクリプト環境としてのブラウザの移植性の高い JavaScript 実装です (多くの場合、「ヘッドレス」ブラウザと呼ばれます)」。

rhino 実装は、JavaScript の Java ランタイムである rhino JavaScript エンジンを使用し、Oracle Java 実装に同梱されます。

env.js は、リファレンス html5 パーサーのクロスコンパイル バージョンを使用し、jQuery ライブラリと html dom をフルに活用する JavaScript を処理できるという点で、合理的な能力を備えています。


さらに、JavaFX Web コンポーネントに関する Thorn の提案も気に入っています。ただし、ビジュアルを表示する必要がない場合は、 WebView ではなくWebEngineのみが必要な場合があります。

于 2012-07-06T00:18:13.973 に答える