簡體   English   中英

如何使用HTMLUnit登錄vbulletin論壇?

[英]How to login to vbulletin forum using HTMLUnit?

我是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_md5passwordvb_login_md5password_utf ,它們是頁面上的隱藏輸入,但是我不知道如何引用或設置它們。 html中的src="clientscript/vbulletin_md5.js?v=384"引用了一個javascript md5腳本。

任何幫助將不勝感激。

編輯:感謝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());

嘗試使用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進行仿真,讓我知道它是否不起作用,以便我編輯答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM