asp.net自动打卡、签到程序
目前公司上下班签到是上局域网的一个系统去点一下,由于打卡比较简单,所以有些快迟到的同事会找已经到公司的人帮忙代打卡。”以其它身份运行程序“来打开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自动打卡、签到程序的更多相关文章
- 如何利用Python实现自动打卡签到
需求描述 我们需要登录考勤系统(网页端,非手机端)进行签到,如果不想每天都早早起来打卡签到,就可以通过写程序实现这一功能. 业务梳理 通过长时间的早起打卡签到发现规律,我每天只是不停的点击,签到,都是 ...
- WPF版公司的自动签到程序
1.外包公司要求早上签到,就写了一个自动打卡程序. 2.一直都想写这个程序,可是一直没有思路,知道有个软件公司找我做自动答题程序,于是自动打卡程序才应运而生.未来可以将自动答题程序开源工大家查看. 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 ...
- Docker容器环境下ASP.NET Core Web API应用程序的调试
本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...
- 在docker中运行ASP.NET Core Web API应用程序
本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...
- 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- 【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- 自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)
PS:概要.背景.结语都是日常“装X”,可以跳过直接看自动发布 环境:阿里云SLB.阿里云ECS.IIS7.0.Jenkins.Spring.Net 概要 公司一个项目从无到有,不仅仅是系统从无到有的 ...
- vs2015 已经支持开发asp .net core 1.0 rc2 程序了
vs2015 已经支持开发asp .net core 1.0 rc2 程序了 http://mp.weixin.qq.com/s?__biz=MzI0MzM1ODczOQ==&mid=2247 ...
随机推荐
- Eclipse开发Android项目安装配置
在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建, ...
- 利用JQuery实现全选和反选的几种方法
前面介绍了利用JavaScript实现全选功能,其中也有要注意的几点,现在讲解下在JQuery怎么实现全选和反选,下面提供了两种方法实现. 如图:要实现的效果是点击全选框全部选中,再点击全部不选中 方 ...
- 查看被锁的数据[Z]
SELECT LOCK_INFO.OWNER || '.' || LOCK_INFO.OBJ_NAME AS OBJ_NAME --对象名称(已经被锁住) ,LOCK_INFO.SUBOBJ_NAME ...
- C#中Spli、正则表达式分解字符串详解
一.String.Split方法提供了如下6个重载函数: 名称 说明 String.Split (Char[]) 返回包含此实例中的子字符串(由指定 Char 数组的元素分隔)的 String 数组. ...
- jquery 字符个数(数字字母长度记为1,中文记为2,超过长度自动截)
<script type="text/javascript"> //返回val的字节长度 function getByteLen(val) { var len = ...
- css多行文本居中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 修改Windows系统的启动Shell
前提:当前系统中有可用的shell文件 方法: 修改当前用户的系统默认shell(只对当前用户生效,且优先于本机默认的shell) 修改“HKCU\SOFTWARE\Microsoft\Windo ...
- 期末考试--nyoj-757
期末考试 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没 交作业就会扣期末 ...
- HD1083 二分图,匈牙利算法
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<stdio.h> #include<stdlib. ...
- python学习day12
目录 html结构与标签 css样式 html结构之head <head> 标签用于定义文档的头部,它是所有头部元素的容器.<head> 中的元素可以引用脚本.指示浏览器在 ...