目前公司上下班签到是上局域网的一个系统去点一下,由于打卡比较简单,所以有些快迟到的同事会找已经到公司的人帮忙代打卡。”以其它身份运行程序“来打开IE,去帮人打下,有时多几个人,也要这样操作,我感觉挺麻烦,所以就想找个简单的方法来完成这个事。

先想打卡用户操作流程,登录打卡页面->点击”上班打卡“("下班打卡")->完成。流程很简单,我们要不打开IE直接用httpclient等类来操作的话,关注的东西应该有身份认证和表单提交(按钮触发事件)。局域网,公司有自己的工作域,那身份验证就是WINDOWS了,提交的数据应该按钮名字加上原始视图和验证视图,为什么是这些数据,这个我想应该是ASP.NET的基本的,如有疑问可以看下http://www.cnblogs.com/fish-li/archive/2012/06/10/2544087.html#_label0asp.net page那点事和http://www.cnblogs.com/fish-li/archive/2011/07/17/2108884.html细说form表单。

下面是核心代码

private string SignIN(string name, string pwd, string btnname)
{
string result = "";
try
{ System.Net.HttpWebRequest req = (HttpWebRequest)System.Net.HttpWebRequest.Create("http://cws/cws_home/Welcome.aspx");
req.ContentType = "application/x-www-form-urlencoded";
req.SendChunked = true;
CredentialCache credentialCache = new CredentialCache();
NetworkCredential credentials = new NetworkCredential(name, pwd);
credentialCache.Add(new Uri(Url), "Negotiate", credentials);
req.Credentials = credentialCache;
req.Method = "POST";
Encoding myEncoding = Encoding.UTF8;
HttpUtility.UrlEncode("", myEncoding);
string param = HttpUtility.UrlEncode("__EVENTTARGET", myEncoding) + "=" +
HttpUtility.UrlEncode(whatfuck) + "&" +
HttpUtility.UrlEncode("__EVENTARGUMENT", myEncoding) + "=" + "&" +
HttpUtility.UrlEncode("__VIEWSTATE", myEncoding) + "=" +
HttpUtility.UrlEncode("/wEPDwUKLTcwODg1MTE2NmRkSwoNIxF8KOccrbrL57PfhViXnpY=", myEncoding) + "&" +
HttpUtility.UrlEncode("__EVENTVALIDATION", myEncoding) + "="
+ HttpUtility.UrlEncode("/wEWAwLq6svwAQKRkrn2CAKMkrn2CF+ktkMYwyMeA64pdF2jiSwcCSRH", myEncoding);
byte[] postBytes = Encoding.ASCII.GetBytes(param);
req.ContentLength = postBytes.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(postBytes, , postBytes.Length);
}
using (WebResponse wr = req.GetResponse())
{
Stream sm = wr.GetResponseStream(); StreamReader reader = new StreamReader(sm, Encoding.GetEncoding("utf-8"));//输出返回值数据
string temp = reader.ReadToEnd();
int tempindex = temp.IndexOf("<script>alert");
if (tempindex > )
{
result = temp.Substring(tempindex + , );
} }
}
catch (Exception ex)
{
return "";
}
return result;
}

其它就是模拟认证,传回__EVENTTARGET,__EVENTARGUMENT,__VIEWSTATE,__EVENTVALIDATION四个参数据,最后一个有可能没有,什么时候有什么时候没有,就不多说了。这里我用了httprequest和httpresponse,其实直接用WebClient也是一样,最主要是明白整个流程的怎么走的,自己怎么去处理,至于怎么做成自动打卡,直接加个Timer就完了,如想很好管理打卡任务可以考虑quartz.net这个任务计划开源组件。有些可能想做网站的签到,那可能还有些其它东西,如cookie的保存,和图片验证码的处理等。cookie倒好处理,但验证码图片怎么处理我也没做过,希望有大神可以指教一下,不胜感激。

asp.net自动打卡、签到程序的更多相关文章

  1. 如何利用Python实现自动打卡签到

    需求描述 我们需要登录考勤系统(网页端,非手机端)进行签到,如果不想每天都早早起来打卡签到,就可以通过写程序实现这一功能. 业务梳理 通过长时间的早起打卡签到发现规律,我每天只是不停的点击,签到,都是 ...

  2. WPF版公司的自动签到程序

    1.外包公司要求早上签到,就写了一个自动打卡程序. 2.一直都想写这个程序,可是一直没有思路,知道有个软件公司找我做自动答题程序,于是自动打卡程序才应运而生.未来可以将自动答题程序开源工大家查看. 3 ...

  3. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  4. Docker容器环境下ASP.NET Core Web API应用程序的调试

    本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...

  5. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  6. 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

    前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...

  7. 【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

    前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...

  8. 自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)

    PS:概要.背景.结语都是日常“装X”,可以跳过直接看自动发布 环境:阿里云SLB.阿里云ECS.IIS7.0.Jenkins.Spring.Net 概要 公司一个项目从无到有,不仅仅是系统从无到有的 ...

  9. vs2015 已经支持开发asp .net core 1.0 rc2 程序了

    vs2015 已经支持开发asp .net core 1.0 rc2 程序了 http://mp.weixin.qq.com/s?__biz=MzI0MzM1ODczOQ==&mid=2247 ...

随机推荐

  1. Eclipse开发Android项目安装配置

    在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建, ...

  2. 利用JQuery实现全选和反选的几种方法

    前面介绍了利用JavaScript实现全选功能,其中也有要注意的几点,现在讲解下在JQuery怎么实现全选和反选,下面提供了两种方法实现. 如图:要实现的效果是点击全选框全部选中,再点击全部不选中 方 ...

  3. 查看被锁的数据[Z]

    SELECT LOCK_INFO.OWNER || '.' || LOCK_INFO.OBJ_NAME AS OBJ_NAME --对象名称(已经被锁住) ,LOCK_INFO.SUBOBJ_NAME ...

  4. C#中Spli、正则表达式分解字符串详解

    一.String.Split方法提供了如下6个重载函数: 名称 说明 String.Split (Char[]) 返回包含此实例中的子字符串(由指定 Char 数组的元素分隔)的 String 数组. ...

  5. jquery 字符个数(数字字母长度记为1,中文记为2,超过长度自动截)

    <script type="text/javascript">  //返回val的字节长度  function getByteLen(val) {  var len = ...

  6. css多行文本居中

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 修改Windows系统的启动Shell

    前提:当前系统中有可用的shell文件   方法: 修改当前用户的系统默认shell(只对当前用户生效,且优先于本机默认的shell) 修改“HKCU\SOFTWARE\Microsoft\Windo ...

  8. 期末考试--nyoj-757

    期末考试 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没 交作业就会扣期末 ...

  9. HD1083 二分图,匈牙利算法

    #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<stdio.h> #include<stdlib. ...

  10. python学习day12

    目录 html结构与标签 css样式   html结构之head <head> 标签用于定义文档的头部,它是所有头部元素的容器.<head> 中的元素可以引用脚本.指示浏览器在 ...