D
D
Dmitry2017-02-17 19:01:50
Python
Dmitry, 2017-02-17 19:01:50

How to deal with AJAX in Python?

The situation is as follows: there is a delink router trying to parse a webmord to catch connected wifi clients, in general, I go through authentication, I go to the desired page with wifi clients, there it first loads the main page, then a post request with xml that contains information about the router and then using js from xml data is selected and added to the main page, so how do I catch it using Python?
I used the documentation and Google but didn’t find anything that would prompt the right idea, so please help without sending it to Google or the documentation

Answer the question

In order to leave comments, you need to log in

2 answer(s)
D
Dmitry, 2017-02-17
@ipatov_dn

Roman Kitaev

<script type="text/javascript">
function Page() {}
Page.prototype =
{	
  services: "WIFI.PHYINF,RUNTIME.INF.LAN-1,RUNTIME.INF.LAN-2,RUNTIME.PHYINF",
  OnLoad: function() { BODY.CleanTable("client_list");BODY.CleanTable("client_list_Aband"); this.idx_24=null; this.idx_5;},
  OnUnload: function() {},
  OnSubmitCallback: function (code, result) { return false; },

  idx_24 : null,
  idx_5 : null,
  inf: null,
  inf2: null,	
  
  InitValue: function(xml)
  {
    PXML.doc = xml;
    this.inf = PXML.FindModule("RUNTIME.INF.LAN-1");
    this.inf += "/runtime/inf/dhcps4/leases";
    this.inf2 = PXML.FindModule("RUNTIME.INF.LAN-2");
    this.inf2 += "/runtime/inf/dhcps4/leases";		

    if (!COMM_ToBOOL('')) {
    PAGE.FillTable("BAND24G-1.2", "WIFI.PHYINF", "RUNTIME.PHYINF");
    }
    PAGE.FillTable("BAND24G-1.1", "WIFI.PHYINF", "RUNTIME.PHYINF");
    
    this.dual_band = COMM_ToBOOL('1');
    if(this.dual_band)
    {
      OBJ("div_5G").style.display = "block";
      PAGE.FillTable("BAND5G-1.1", "WIFI.PHYINF", "RUNTIME.PHYINF");
      PAGE.FillTable("BAND5G-1.2", "WIFI.PHYINF", "RUNTIME.PHYINF");
    }
  },	
  
  FillTable : function (wlan_uid, wifi_phyinf ,runtime_phyinf)
  {		
    var wifi_module 	= PXML.FindModule(wifi_phyinf);
    var rwifi_module 	= PXML.FindModule(runtime_phyinf);
    var phyinf = GPBT(wifi_module, "phyinf", "uid",wlan_uid, false);
    
    var wifi_profile 	= XG(phyinf+"/wifi");
    var wifip 	= GPBT(wifi_module+"/wifi", "entry", "uid", wifi_profile, false);
    var freq 	= XG(phyinf+"/media/freq");	
    var rphyinf = GPBT(rwifi_module+"/runtime","phyinf","uid",wlan_uid, false);
    rphyinf += "/media/clients";
    
    if (!this.inf||!phyinf)
    {
      BODY.ShowAlert("Initial() ERROR!!!");
      return false;
    }
    
    var uid_prefix = wlan_uid.split("-")[0];
    if(uid_prefix == "BAND5G")
      str_Aband = "_Aband";
    else
      str_Aband = "";
    
    /* Fill table */
    var cnt = XG(rphyinf +"/entry#");
    var ssid = XG(wifip+"/ssid");
    
    if(cnt == "") cnt = 0;
    var idx = (uid_prefix=="BAND5G") ? this.idx_5 : this.idx_24 ;
    if(idx==null)	idx = 1;
    for (var i=1; i<=cnt; i++)
    {
      var uid		= "DUMMY-"+idx;	idx++;
      var mac		= XG(rphyinf+"/entry:"+i+"/macaddr");
      var ipaddr	= this.GetIP(mac, wlan_uid);
      var mode	= XG(rphyinf+"/entry:"+i+"/band");
      var rssi	= XG(rphyinf+"/entry:"+i+"/rssi");
      //if(freq == "5")
      if(uid_prefix=="BAND5G")
      {
        if(mode=="11g") mode="11a";
        else if(mode=="11n") mode="11n";
      }
      var rate	= XG(rphyinf+"/entry:"+i+"/rate");
      var data	= [mac, ipaddr, mode, rate, rssi];
      var type	= ["text", "text", "text", "text", "text"];
      BODY.InjectTable("client_list"+str_Aband, uid, data, type);
    }
    (uid_prefix=="BAND5G") ? this.idx_5 = idx : this.idx_24 = idx;
    OBJ("client_cnt"+str_Aband).innerHTML = idx-1;
  },
  
  PreSubmit: function() { return null; },
  IsDirty: null,
  Synchronize: function() {},
  // The above are MUST HAVE methods ...
  ///////////////////////////////////////////////////////////////////////
  IsGuestZone: function(wlan_uid)
  {
    var str = wlan_uid.split('.');
    if(str[1]==="2")	return true;
    else 				return false;
  }, 
  GetIP: function(mac, wlan_uid)
  {
    var is_guestzone =  this.IsGuestZone(wlan_uid);
    var path = null;
    var ip = null;
    
    if(!is_guestzone)
    {
      path = GPBT(this.inf, "entry", "macaddr", mac.toLowerCase(), false);
      ip =  XG(path+"/ipaddr");	
    }
    else 
    {
      path = GPBT(this.inf2, "entry", "macaddr", mac.toLowerCase(), false);
      ip =  XG(path+"/ipaddr");
    }
    return ip;		
  }
}
</script>

D
Dimonchik, 2017-02-17
@dimonchik2013

catch
https://habrahabr.ru/post/312816/

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question