因为公司上下班老是要进行登录,
而忘记登录就扣两个小时的工作时间。
所以想编一个程序,定时登录网站
(填写用户名,密码(这些都不用验证)然后提交,进入下一个页面点击某个按钮,最后进入登记页面点击提交)。
请高手说下方法,最好有源码。
头次发贴,希望能解决。
而忘记登录就扣两个小时的工作时间。
所以想编一个程序,定时登录网站
(填写用户名,密码(这些都不用验证)然后提交,进入下一个页面点击某个按钮,最后进入登记页面点击提交)。
请高手说下方法,最好有源码。
头次发贴,希望能解决。
解决方案 »
- C# 基类能访问子类公有数据吗?
- 简单的数据库存储方式问题
- 急求c# listview中的内容导出为.csv格式数据
- SqlDataAdapter如何更新数据?Update问题
- 请教。DES可逆的加密用户重要信息存数据库了?密钥怎么存放呢?
- Win Form中怎样使DataGrid的某列按右对齐???????
- 如何在程序中控制纸张大小,有成功经验者进!!!!!!
- (高分100!!)高手留步!!为什么我的Remotesoft .NET 用不了??
- 水晶报表!大侠们进来指点一下!
- 请问在ListView中如果产生平坦效果的滚动条?
- ▲▲▲▲▲▲▲▲▲▲▲ aspx数据库数据源的问题(我是新手)???(在线立刻结分)
- 怎么数字16格式化字符串
===============================================这个不会操作,能具体点吗?
但是我希望用一个程序,到了时间的话就自动帮我登录。
好像用任务计划的话,只能弹出IE,也就是那个网站,而没法登录。
我写了一个类,专门用来提交表单,GET、POST,上传下载文件都可以,除了解析html外,浏览器能做的事情,这个类都可以完成。我空间也有个VB.NET版的,但是不完善。要C#版的可以加我qq281066383,我有空会发布到csdn空间
或者你发邮件到[email protected].感激不尽。
2 需要知道提交内容
3 httpwebrequest 和httpwebresponse 可以帮你把数据提交
但那样定位不准,容易出现问题。
况且若能用c#给实现,不是更好吗?
先用sniffer查包
然后用 get http://www.xxx.com/
HTTP/1.0
Accept: */*
Referer: http://www.xxx.com/
Accept-Language: zh -cn
Accept-Encoding: gzip , deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
Host: www.xxx.com
Connection: Keep -Alive
Cookie: name=xxx,pwd=xxx然后自己写吧
http://blog.csdn.net/wo789/archive/2007/11/13/1882176.aspx要提交什么数据到服务器可以用sniffer之类的软件抓html包分析,也可以自己在浏览器中查看网页源代码找到要提交的表单,然后用我的那个类来帮你提交。
public static string GetPage(string url, string postData,string encodeType,out string err) { Stream outstream = null; Stream instream = null; StreamReader sr = null; HttpWebResponse response = null; HttpWebRequest request = null; Encoding encoding = Encoding.GetEncoding(encodeType); byte[] data = encoding.GetBytes(postData); // 准备请求... try { // 设置参数 request = WebRequest.Create(url) as HttpWebRequest; CookieContainer cookieContainer = new CookieContainer(); request.CookieContainer = cookieContainer; request.AllowAutoRedirect = true; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; outstream = request.GetRequestStream(); outstream.Write(data,0,data.Length); outstream.Close(); //发送请求并获取相应回应数据 response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 instream = response.GetResponseStream(); sr = new StreamReader( instream, encoding ); //返回结果网页(html)代码 string content = sr.ReadToEnd(); err = string.Empty; return content; } catch(Exception ex) { err = ex.Message; return string.Empty; } }
不过还是很谢谢楼上的兄弟。我写的代码如下。
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElement ClickBtn = null;
HtmlDocument doc = webBrowser1.Document;
for (int i = 0; i < doc.All.Count; i++)
{
//MessageBox.Show(doc.All[i].TagName.ToUpper());
if (doc.All[i].TagName.ToUpper().Equals("INPUT"))
{
if (doc.All[i].Name.ToUpper().IndexOf("PWD") >= 0)
{
MessageBox.Show(doc.All[i].Name.ToUpper());
doc.All[i].InnerText = "password";
}
switch (doc.All[i].Name.ToUpper())
{
case "USERNAME":
doc.All[i].InnerText = "username";
break;
case "PWD":
doc.All[i].InnerText = "password";
break;
case "Button":
ClickBtn = doc.All[i]; //提交按钮
break;
}
}
}
ClickBtn.InvokeMember("Click"); //执行按扭操作
}
<td width="100"><p align=center><font size=2><A href=user_login.asp class=p4>考勤</td>
程序抓取不到这个东西。
看来你还没明白!
点击按钮也是提交表单,跟你直接用URL提交表单有什么区别?如果公司登陆提交方式是post(相当有可能,因为get方式会暴露你的密码),你需要一个拆包工具(如:httpwatch)。
然后可以模拟提交表单,js、vb脚本都能实现,用java或c#也行。
“1 需要跟踪下连接
2 需要知道提交内容
3 httpwebrequest 和httpwebresponse 可以帮你把数据提交”差不多就是这个意思。
找个软件直接录一下就是了,比如 AutoIt
这里是前一阵我写类似代码是收集的一些资料.完全可以完成楼主需要的功能.
这里的登录模块