我目前正在尝试项目发送一个URL到多个网站扫描他们的分类和任何安全风险使用Java和HtmlUnit.
www.virustotal.com是我必须的最后一个网站配置和我正在通过该网站进行的问题,因为href是空的。Java HtmlUnit - 当刮网站时收到空href
该网站的工作原理是在第一页输入网址,然后点击提交。从这里显示一个弹出窗口,用户必须选择是重新分析还是使用最后的扫描结果(在这种情况下,我们希望始终重新分析)。它是提供空href的重新分析锚。我的想法是,这是一个JavaScript问题,它不会生成结果页面的URL。不幸的是,我不确定哪里去旁边:/
项目代码(道歉是多么邋遢!): -
//turn off htmlunit logging//
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);
java.util.logging.Logger.getLogger("org.apache.http.client.protocol.ResponseProcessCookies").setLevel(java.util.logging.Level.OFF);
//initialise url and obtain users selection//
System.out.println("Please select the url you would like to review:");
Scanner sc = new Scanner(System.in);
String startPath = sc.nextLine();
//enable javascript and use engine to initialise and parse websites code//
String url = "https://www.virustotal.com/#url";
System.out.println("Connecting to Virus Total...");
WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.waitForBackgroundJavaScript(8000);
page = webClient.getPage(url);
//fill in form
HtmlForm form = page.getFirstByXPath("//form[@action='/en/url/submission/']");
HtmlTextInput textField = form.getInputByName("url");
textField.setValueAttribute(startPath);
HtmlButton button1 = page.getFirstByXPath("//button[@id='btn-scan-url']");
HtmlPage page1 = button1.click();
//waiting and dealing with popup
webClient.waitForBackgroundJavaScript(8000);
String page1String = page1.getWebResponse().getContentAsString();
System.out.println(page1String);
HtmlAnchor htmlAnchor = page1.getFirstByXPath("//button[@id='btn-url-reanalyse']");
System.out.println(htmlAnchor); //testing what I can see in the anchor
HtmlPage page2 = htmlAnchor.click();
//progressing to next screen
String output = page2.asText();
System.out.println(output);
HTML后我会收到打印出字符串page1String:
<div class="modal-footer">
<a id="btn-url-reanalyse" class="btn" href="">
Reanalyse
</a>
HTML当通过手动现场进展
<a id="btn-url-reanalyse" class="btn" href="/en/url/submission/?force=1&url=http%3A//www.facebook.com/&token=415eda59daae48938b1dcc64f3152ed5ee9ac27d485348d55c87e9da7e714605">
Reanalyse
</a>
任何帮助或建议将不胜感激!我也很乐意与任何提供的模块建议一起工作,只需使用HtmlUnit
,因为它是我发现与其他站点实际合作的第一个。
在此先感谢。
我希望Facebook令牌不是一个重要的。 – Oleg
附加在网址中。它可能是一个公开的@Oleg –
@SagarV也许,只是指出了OP的情况下,它不是... – Oleg