我想编写一个java程序,可以浏览与steam相关联的网页。问题是我不明白Steam如何自动登录用户。
我认为这些服务使用某种cookie,但我在chrome cookie manager中找不到这些cookie。因此,即使我编写了一个单击登录按钮的程序,然后转到登录页面,然后填写它,安全页面会出现,要求确认电子邮件,我不能也不想编程。 这些网站为tf2outpost.com和backpack.tf。
答案 0 :(得分:1)
实际上,该网站存在错误。
<script language="javascript">
function Logout()
{
$('actionInput').value = 'steam_openid_logout';
$('openidForm').submit();
}
>$J( function() { $J('#steamAccountName').focus() } );
</script>
>$J
的问题,这是一个不正确的JavaScript,HtmlUnit不允许这样做。
要解决此问题,您可以按照提示here更改回复。
所以你可以拥有类似的东西:
try (WebClient webClient = new WebClient(BrowserVersion.CHROME)) {
new WebConnectionWrapper(webClient) {
public WebResponse getResponse(WebRequest request) throws IOException {
WebResponse response = super.getResponse(request);
if (request.getUrl().toExternalForm().endsWith("identifier_select")) {
String content = response.getContentAsString("UTF-8");
content = content.replace(">$J( function()", "$J( function()");
WebResponseData data = new WebResponseData(content.getBytes("UTF-8"),
response.getStatusCode(), response.getStatusMessage(), response.getResponseHeaders());
response = new WebResponse(data, request, response.getLoadTime());
}
return response;
}
};
HtmlPage page = webClient.getPage("http://www.tf2outpost.com");
HtmlAnchor a = page.getAnchorByHref("/login");
page = a.click();
page.<HtmlInput>getHtmlElementById("steamAccountName").setValueAttribute(username);
page.<HtmlInput>getHtmlElementById("steamPassword").setValueAttribute(password);
page = page.<HtmlInput>getHtmlElementById("imageLogin").click();
webClient.waitForBackgroundJavaScript(5000);
System.out.println(page.asXml());
不过,这里有验证码。
希望有所帮助。