Я новичок в HTMLUnit, пытаясь очистить веб-форум vbulletin. У меня возникли проблемы с вводом пользователя/пароля и фактическим входом в систему.
Вот мой код:
package scraper;
import java.io.IOException;
import java.net.UnknownHostException;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class Scraper {
public static void main(String[] args) {
try {
Scraper ocau = new Scraper("http://forums.overclockers.com.au/forumdisplay.php?f=15&order=desc");
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
public Scraper(String url) throws UnknownHostException {
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24);
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setCssEnabled(false);
HtmlPage page;
try {
page = webClient.getPage(url);
HtmlForm login = page.getForms().get(0);
System.out.println(login);
} catch (FailingHttpStatusCodeException | IOException e) {
e.printStackTrace();
}
webClient.closeAllWindows();
}
}
Результатом этого является просто форма входа (я думаю):
HtmlForm[<form action="login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">]
Скрипт/форма на странице:
<script type="text/javascript" src="clientscript/vbulletin_md5.js?v=384"></script>
<form action="login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">
<input type="hidden" name="do" value="login" />
<input type="hidden" name="url" value="/forumdisplay.php?f=15&order=desc" />
<input type="hidden" name="vb_login_md5password" />
<input type="hidden" name="vb_login_md5password_utf" />
<input type="hidden" name="s" value="" />
<input type="hidden" name="securitytoken" value="guest" />
Я не слишком уверен, куда идти дальше, чтобы ввести имя пользователя/пароль и нажать «Отправить». Я прочитал этот ответ, в котором говорилось, что мне нужно установить vb_login_md5password
и vb_login_md5password_utf
, которые являются скрытыми входными данными на странице, но у меня есть понятия не имею, как ссылаться или устанавливать их. Существует сценарий javascript md5, указанный в html в src="clientscript/vbulletin_md5.js?v=384"
.
Любая помощь будет принята с благодарностью.
Редактировать: благодаря arya, теперь это работает, мне пришлось использовать этот код, чтобы войти в систему и распечатать страницу:
((HtmlElement) page.getFirstByXPath("//fieldset/table/tbody/tr/td/input")).type("secretusername");
((HtmlElement) page.getFirstByXPath("//fieldset/table/tbody/tr[2]/td/input")).type("secretpassword");
HtmlPage loggedin = ((HtmlElement) page.getFirstByXPath("//tr[4]/td/input")).click();
System.out.println(loggedin.asXml());