[英]Execute second POST method JSoup
我想提取調制解調器雷達上的無線信號。 為此,我正在嘗試使用JSoup將víaWeb連接到調制解調器。 為此,請按照以下步驟操作:
按下掃描按鈕后,我必須至少等待5秒鍾才能獲得無線列表。 這是我到目前為止的內容:
Extraccion.java
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import javax.net.ssl.*;
import java.awt.*;
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.Map;
public class Extraccion {
private void disableSSLCertCheck() throws NoSuchAlgorithmException, KeyManagementException {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// Create all-trusting host name verifier
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
// Install the all-trusting host verifier
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
}
public static void main(String[] args) throws IOException, KeyManagementException, NoSuchAlgorithmException, AWTException {
Robot r = new Robot();
Extraccion e = new Extraccion();
e.disableSSLCertCheck();
// Here I get the form content '/goform/login'
Connection.Response loginForm = Jsoup.connect("https://ip_address/goform/login")
.method(Connection.Method.GET)
.data("cookieexists", "false")
.data("user", "admin")
.data("pws", "admin")
.data("Login", "Login")
//.cookies(loginCookies)
.method(Connection.Method.POST)
.execute();
Map<String, String> loginCookies = loginForm.cookies();
//r.delay(5000);
Document document2 = Jsoup.connect("https://ip_address/admin/feat-lan-ip.asp")
.cookies(loginCookies)
.get();
Element tableDHCP = document2.getElementById("connected_computers");
System.out.println("Printing connected devices");
System.out.println(tableDHCP);
Connection.Response submitButton = Jsoup.connect("https://ip_address/goform/WlsRadar")
.data("setRadar", "scan")
.data("dir", "admin/")
.data("file", "wireless_radar")
.cookies(loginCookies)
.method(Connection.Method.POST)
.execute();
r.delay(20000);
loginCookies = submitButton.cookies();
document2 = Jsoup.connect("https://ip_address/admin/wireless_radar.asp")
.cookies(loginCookies)
.get();
Element tableWireless_radar = document2.getElementById("maincontent");
System.out.println("Printing radar wireless");
System.out.println(tableWireless_radar);
}
}
我可以登錄該頁面,但無法按“掃描”按鈕。 按鈕的部分頁面如下所示:
wireless_radar.asp
<form name="RadarForm" action="/goform/WlsRadar" method="post">
<input type="hidden" value="admin/" name="dir">
<input type="hidden" value="wireless_radar" name="file">
<input type="hidden" value="" name="setRadar">
<p id="introduction"></p>
<p id="title1"><span class="LANGS" id="Wireless_WifiSiteSurvey_Title">Survey Result</span></p>
<div id="content1">
<table class="checklist1" id="wlsRadar_table">
<tbody><tr class="item">
<td class="wireless_radar2"><span class="LANGS" id="Wireless_WifiSiteSurvey_Channel">ch</span></td>
<td class="wireless_radar6"><span class="LANGS" id="Wireless_WifiSiteSurvey_Ssid">SSID</span></td>
<td class="wireless_radar7"><span class="LANGS" id="Wireless_WifiSiteSurvey_Bssid">BSSID</span></td>
<td class="wireless_radar8"><span class="LANGS" id="Wireless_WifiSiteSurvey_Security">Security</span></td>
<td class="wireless_radar3"><span class="LANGS" id="Wireless_WifiSiteSurvey_siganl">signal(%)</span></td>
<td class="wireless_radar4"><span class="LANGS" id="Wireless_WifiSiteSurvey_Wmode">W-mode</span></td>
<td class="wireless_radar4"><span class="LANGS" id="Wireless_WifiSiteSurvey_ExtenelChannel">ExtCH</span></td>
<td class="wireless_radar2"><span class="LANGS" id="Wireless_WifiSiteSurvey_Inservice">NT</span></td>
<td class="wireless_radar5"><span class="LANGS" id="Wireless_WifiSiteSurvey_WPS">WPS DPID</span></td>
</tr>
</tbody></table>
</div> <!--end of content1-->
<div id="content1">
<center>
<span class="LANGS" id="Wireless_WifiSiteSurvey_ScanButton"><input type="submit" class="button" value="Scan" onclick="ScanRadar()"></span>
<span class="LANGS" id="Wireless_WifiSiteSurvey_ClearButton"><input type="submit" class="button" value="Clear" onclick="clearResult()"></span>
<center>
</center></center></div>
</form>
</div>
我要按的按鈕是“掃描”,但似乎沒有ID。 知道它如何工作嗎?
PS:每當我單擊“掃描”按鈕時,此代碼:
<input type="hidden" value="" name="setRadar">
更改為:
<input type="hidden" value="scan" name="setRadar">
我不知道您的路由器,但是wifi調查網站似乎執行了一些JavaScript。 JSoup無法運行JavaScript。 它不是瀏覽器。 它只是解析HTML並在內存中創建該HTML的DOM表示。
您或者想使用一個真正的瀏覽器並通過Java進行控制(例如,參見selenium webdriver),或者您可以分析JavaScript的實際作用,並觸發AJAX調用或其他操作。 如果可以正確重現所有參數,則可以使用JSoup模仿此類AJAX調用。 使用瀏覽器開發人員的工具找出路由器網站上實際發生的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.