gpt4 book ai didi

Java - 创建模拟浏览器

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:12:57 27 4
gpt4 key购买 nike

我正在开发一个与社交网络上的用户交互的程序。我想要一个可以处理大部分或所有网络通信的工具

我的工作包括登录网站、阅读帖子、发送回复和个人消息。

我最初认为我可以处理一些套接字代码的必要交互。我最初的单次运行案例运行成功(我能够登录、发布内容、响应查询等),但是尝试一起运行所有内容却不起作用(服务器无法识别我的请求,各种其他错误)。我做了一些非常糟糕的 cookie 跟踪,我将套接字从 80 切换到 443 以进行 SSL 通信,我生成自己的数据包发送到社交网络服务器,因为这是我第一次尝试网络交互,我离我的距离很远深度。我更喜欢跟踪 cookie、处理 SSL 通信、处理一般通信问题等的集成解决方案。基本上我希望我可以给出按钮的 X、Y 坐标(或从页面获取按钮列表,找到我想要的按钮,选择那个)和在文本框中键入的内容的文本,并让模拟浏览器执行所有必要的数据包以进行网络交互。

我想知道是否有我可以使用的 java 模拟浏览器。即,我可以获得页面上文本框的句柄,输入我的登录信息并执行登录过程(然后模拟浏览器将处理所有 cookie,处理单个数据包等)

我的目标是拥有一个可以在我的计算机上运行的程序,该程序可以与社交网络上的用户进行交互,而无需我进行任何重要输入(我不希望该程序垄断 Firefox,这会阻止我同时使用 Firefox在我的系统上)

对于上下文,我发送典型的 html 页面调用以及自定义数据包调用(并解析结果)

谢谢你的帮助

最佳答案

我建议您选择以下两条路线之一:

选项 1:使用 Apache Http Components Library .我发现这非常容易用于将表单数据发送到 Web 服务器。它支持 SSL 和 cookie,尽管我还没有为此使用它。我遇到的唯一问题是我似乎无法让它通过代理服务器进行通信。参见 my the question I posted about this.但只要你不通过代理,我就会给图书馆一个热烈的推荐,我在上面的链接中发布的代码显示了它是多么容易使用。以下是将表单数据发送到 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:JavaFX 附带一个功能齐全的 Web 浏览器,称为 Web View 。您可以通过编程方式与其交互,这在 Java Spotlight Podcast 的最近一期中进行了讨论.

关于Java - 创建模拟浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11352888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com