在IE里面输入路由器IP地址就会弹出个登陆框,输入账号密码后,就可以看到路由器的界面了
现在我想通过编程实现登陆路由器,下载网页的源代码到本地,怎么实现
希望大家给出C#代码
给出原理也行
关键是那登陆界面不是普通的网页,不知道可不可以POST,还有验证页面也不知道
现在我想通过编程实现登陆路由器,下载网页的源代码到本地,怎么实现
希望大家给出C#代码
给出原理也行
关键是那登陆界面不是普通的网页,不知道可不可以POST,还有验证页面也不知道
解决方案 »
- WindowForm生命周期
- 100分求一个具体思路。【见图】
- 为什么多态中父类不能访问子类的shadows方法??
- 初等问题:请问在C#类中 "~"是什么意思
- 想问一下关于自定义DataGridViewCell的问题
- 请问这个button怎么没有移动呢?
- Failed to enable constraints. One or more rows contain values violating non-
- access数据库中一个表内含有多少纪录条数
- C#做类似iis 的web 服务(不是web services ) 的程序或windows服务,能在指定端口上运行asp.net程序向外提供页面请求服务.
- 如何把一个窗口设成另一个窗口的子窗口
- DateTimePicker1 怎么获取当前选中的日期或时间
- 关于在.net中跳转站点的问题
可以选择附带身份验证信息
{
string userName = "admin";
string password = "702";
CookieContainer webCookieContainer = new CookieContainer();
String url = "http://192.168.1.1";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;CIBA)";
req.CookieContainer = webCookieContainer;
req.KeepAlive = true;
req.Accept = "*/*";
req.PreAuthenticate = true;
CredentialCache myCache=new CredentialCache();
myCache.Add(new Uri("http://192.168.1.1"), "Basic", new NetworkCredential(userName, password));//添加Basic认证
req.Credentials = myCache;
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
resp.Cookies = webCookieContainer.GetCookies(req.RequestUri);
StreamReader sr = new StreamReader(resp.GetResponseStream(), System.Text.Encoding.Default);
String line = sr.ReadToEnd();//这里就是网页内容了。
sr.Close();
resp.Close();
}
我现在暂时不需要读取网页内容
public static void ConnectCallback1(IAsyncResult ar)
{
allDone.Set();
Socket s = (Socket)ar.AsyncState;
try
{
s.EndConnect(ar);
}
catch
{
}
} public void Scan()
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
allDone.Reset();
try
{
s.BeginConnect(m_host, 80, new AsyncCallback(ConnectCallback1), s);
}
catch
{
} // wait here until the connect finishes. The callback
// sets allDone.
allDone.WaitOne(timeout, false); if (s.Connected)
{
string url = "http://" + m_host;
//如果连接上,证明此商品为开放状态
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout = 5000;
WebResponse response = request.GetResponse();
}
catch (Exception es)
{
//返回错误为401,权限不足,为路由器登陆界面
if (es.Message.Contains("401"))
{
}
第一次测试很正确,关掉程序再打开测试结果就不同了,关掉电脑再开结果又很正确,我怀疑有个缓存机制,具体的我就不知道了,有没有人帮我解决下,我希望不管在什么情况下,只要对方是路由器登陆界面,都返回401错误