【发布时间】:2011-11-06 22:14:07
【问题描述】:
此时是否有可能通过 Java 填写表单?我不只是使用其他工具的问题是该页面必须使用帐户登录,然后我才能填写表格。这是一个简单的表格,只有 3 个输入 - 姓名、电子邮件、出生日期(文本)。但我需要设置 cookie 才能填写它们。
这是我目前的方法:
public static void doSubmit(String url, HashMap<String, String> data) throws Exception {
URL siteUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection();
conn.setRequestProperty("Cookie", "user=john; pass=password");
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
System.out.println("Debug 1: URL = "+url);
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
Set keys = data.keySet();
Iterator keyIter = keys.iterator();
String content = "";
for(int i=0; keyIter.hasNext(); i++) {
Object key = keyIter.next();
if(i!=0) {
content += "&";
}
content += key + "=" + URLEncoder.encode(data.get(key), "UTF-8");
}
// System.out.println(content);
out.writeBytes(content);
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
while((line=in.readLine())!=null) {
System.out.println(line);
}
in.close();
}
我从另一个站点找到了这个方法,这里是 hashmap
data.put("name", "name");
data.put("email", "email@email.com");
data.put("dob", "1/1/1900");
doSubmit("link.com/index.php", data);
有没有更简单的方法?可能控制浏览器(例如 Chrome)自动填写?
【问题讨论】:
-
在 cookie 中存储用户/密码是一个巨大的安全漏洞。尽快修复它。或者,如果它不是您的网站,请举报。