Как войти на форум vbulletin, используя HTMLUnit?

1

Я новичок в 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&amp;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, которые являются скрытыми 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());
Теги:
web-scraping
htmlunit
vbulletin

1 ответ

2
Лучший ответ

Попробуйте ввести значения с помощью xpath и посмотрите, работает ли это.

page.getFirstByXPath("//fieldset/table/tbody/tr/td/input").type("yourid") //this needs to be casted to htmlelement I think, eclipse should take of that

page.getFirstByXPath("//fieldset/table/tbody/tr[2]/td/input").type("yourpass") //also needs to be casted

page.getFirstByXPath("//tr[4]/td/input").click(); //also needs to be casted!

Если вышеприведенное решение не работает, вам нужно будет захватить трафик чем-то вроде Fiddler и подражать ему с помощью HTMLUnit, сообщите мне, если он не работает, поэтому я могу отредактировать свой ответ.

  • 0
    Спасибо! Это сработало! Я добавил полное рабочее решение в редактирование моего вопроса. Теперь мне нужно немного почитать, чтобы понять, почему это работает! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню