不同厂商不一样。一般它们提供web管理程序,那么你可以用fiddler抓取请求响应然后模拟下。

解决方案 »

  1.   


    可否说一下,我使用的是D-link,我在网上查了一些代码,但好像没有用,请问是不是代码不对,谢指导。网上的代码为:
    01.public static void RestartRouter(string routerIP, string name, string pwd)  
    02.{  
    03.    WebClient client = new WebClient();  
    04.    string str = Convert.ToBase64String(Encoding.Default.GetBytes(string.Format("{0}:{1}", name, pwd)));  
    05.    client.Headers["Authorization"] = "Basic " + str;  
    06.    client.DownloadString("http://" + routerIP + "/userRpm/SysRebootRpm.htm?Reboot=%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7");  
    07.    client.Dispose();  
    08.}  
    09.  
    10.private static void RestartRouter(string userName,string password)  
    11.{  
    12.    CookieContainer container = new CookieContainer();  
    13.    string requestUriString = "http://192.168.1.1/userRpm/SysRebootRpm.htm?Reboot=%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7";  
    14.    HttpWebRequest request = (HttpWebRequest) WebRequest.Create(requestUriString);  
    15.    request.Method = "GET";  
    16.    request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;CIBA)";  
    17.    request.CookieContainer = container;  
    18.    request.KeepAlive = true;  
    19.    request.Accept = "*/*";  
    20.    request.Timeout = 0xbb8;  
    21.    request.PreAuthenticate = true;  
    22.    CredentialCache cache = new CredentialCache();  
    23.    cache.Add(new Uri(requestUriString), "Basic", new NetworkCredential(userName, password));  
    24.    request.Credentials = cache;  
    25.    try  
    26.    {  
    27.       HttpWebResponse response = (HttpWebResponse) request.GetResponse();  
    28.       response.Cookies = container.GetCookies(request.RequestUri);  
    29.       new StreamReader(response.GetResponseStream(), Encoding.Default).Close();  
    30.       response.Close();  
    31.    }  
    32.    catch (Exception exception)  
    33.    {  
    34.       Console.WriteLine(exception.ToString());  
    35.    }  
    36.}  
      

  2.   

    //自己的路由器测试成功  public string GetStr(string password)  //路由器密码
            {
                string userName = "admin";   //路由器帐号
              
                CookieContainer webCookieContainer = new CookieContainer();
                String url = "http://192.168.2.1/userRpm/SysRebootRpm.htm?Reboot=%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7"; //这个地址自己去抓取.品牌 不同.发送的参数也不同.
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                req.Method = "GET"; 
                req.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; qdesk 2.5.1270.201; Windows NT 6.2; Trident/6.0)";
                req.CookieContainer = webCookieContainer;
                req.KeepAlive = true;
                req.Accept = "*/*";
                req.PreAuthenticate = true; 
                CredentialCache myCache = new CredentialCache();
                myCache.Add(new Uri("http://192.168.2.1"), "Basic", new NetworkCredential(userName, password));//添加Basic认证
                req.Credentials = myCache;
                string str = "";
                try
                {
                    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
                    resp.Cookies = webCookieContainer.GetCookies(req.RequestUri);
                    StreamReader sr = new StreamReader(resp.GetResponseStream(), System.Text.Encoding.Default);
                     str  = sr.ReadToEnd(); 
                    sr.Close();
                    resp.Close();
                    return str;
                }
                catch(Exception ex)
                {
                    return ex.Message;
                }
            }
      

  3.   


    多多使用Fiddler 检测下实际和你自己发送的数据是不是一样的.
      

  4.   

    请问楼上的路由器是有线还是无线的,是不是TP-LINK? 我之前用TP-LINK也试过,是可以的,但就不知D-LINK该如何实现。。求高手
      

  5.   


    无线的.不是tp-link ,迅捷的.
    没有D-LINK 路由器.我也不能抓包,你自己抓包看看吧
      

  6.   


    你确定你已经测试,并且是成功的?纯粹扯淡!
    你确定第15行代码 new Uri("http://192.168.2.1"),  不是  new Url("http://192.168.2.1"), ?
      

  7.   


    如何抓包呢?有没有工具可用?
    fiddler,或者浏览器开发者工具,firefox有firebug,谷歌浏览器的开发者工具最好用
      

  8.   


    你确定你已经测试,并且是成功的?纯粹扯淡!
    你确定第15行代码 new Uri("http://192.168.2.1"),  不是  new Url("http://192.168.2.1"), ?你好认真啊
      

  9.   

    我觉得用telnet方式去做有可能更容易
    现在路由器都支持telnet吧
      

  10.   


    你确定你已经测试,并且是成功的?纯粹扯淡!
    你确定第15行代码 new Uri("http://192.168.2.1"),  不是  new Url("http://192.168.2.1"), ?
    你确定你已经测试,并且是成功的?纯粹扯淡!
    你确定第15行代码 new Uri("http://192.168.2.1"),  不是  new Url("http://192.168.2.1"), ?你好认真啊纯粹扯淡! 
    麻烦你把代码拷到vs里面去再喷好不好?
    我不测试成功,我敢写这句话?