简体   繁体   English

执行第二个POST方法JSoup

[英]Execute second POST method JSoup

I want to extract the wireless signals on the radar of my modem. 我想提取调制解调器雷达上的无线信号。 For this, I'm trying to connect vía web to my modem using JSoup. 为此,我正在尝试使用JSoup将víaWeb连接到调制解调器。 To do this, I follow the next steps: 为此,请按照以下步骤操作:

  1. Login with the credentials. 使用凭据登录。
  2. Visit the inner link Wifi Survey. 访问内部链接Wifi调查。
  3. Press the scan button. 按下扫描按钮。

After the scan button, I have to wait at least 5 seconds to get the list of wireless near. 按下扫描按钮后,我必须至少等待5秒钟才能获得无线列表。 This is what I have so far: 这是我到目前为止的内容:

Extraccion.java 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);
    }
}

I can login into the page, but I'm not able to press the scan button. 我可以登录该页面,但无法按“扫描”按钮。 This is how the section page of the button looks like: 按钮的部分页面如下所示:

wireless_radar.asp 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>

The button I'm trying to press is Scan, but it seems that doesn't have an ID. 我要按的按钮是“扫描”,但似乎没有ID。 Any idea how It could work? 知道它如何工作吗?

PS: Everytime I click on Scan button, this code: PS:每当我单击“扫描”按钮时,此代码:

<input type="hidden" value="" name="setRadar">

changes into: 更改为:

<input type="hidden" value="scan" name="setRadar">

I do not know your router, but it seems that the wifi survey website performs some JavaScript. 我不知道您的路由器,但是wifi调查网站似乎执行了一些JavaScript。 JSoup does not run JavaScript. JSoup无法运行JavaScript。 It is not a browser. 它不是浏览器。 It simply parses HTML and creates a DOM representation of that HTML in memory. 它只是解析HTML并在内存中创建该HTML的DOM表示。

You either want to use a real browser and control that via Java (see at selenium webdriver for example) or you can analyze what the JavaScript actually does and it it triggers an AJAX call or something. 您或者想使用一个真正的浏览器并通过Java进行控制(例如,参见selenium webdriver),或者您可以分析JavaScript的实际作用,并触发AJAX调用或其他操作。 JSoup can be used to mimic such AJAX calls, if you can reproduce all parameters correctly. 如果可以正确重现所有参数,则可以使用JSoup模仿此类AJAX调用。 Use the browser developer's tools to find out what actually goes on on the routers website. 使用浏览器开发人员的工具找出路由器网站上实际发生的情况。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM