asp.Net自動カード、チェックインプログラム
8472 ワード
現在、会社の通勤サインはローカルエリアネットワークのシステムに行って注文して、カードを打つのは比較的に簡単なため、遅刻しそうな同僚はすでに会社に着いた人を探してカードを打つのを手伝います.」他の身分でプログラムを実行して"IEを開けて、人を手伝って打って、时には何人か、このように操作して、私はとても面倒だと感じて、だから简単な方法を探してこの事を完成したいです.
まずユーザーの操作プロセスをカードしたいのですが、カードを打つページにログイン->クリック「通勤カードを打つ」(「退勤カードを打つ」)->完了.流れは簡単で、IEを開けてhttpclientなどのクラスで操作しないと、注目するものはアイデンティティ認証とフォーム提出(ボタントリガーイベント)があるはずです.ローカルエリアネットワーク、会社は自分の仕事のドメインがあって、その認証はWINDOWSで、提出したデータはボタンの名前に原始のビューと検証のビューを加えるべきで、どうしてこれらのデータで、これはASPだと思います.NETの基本的な、疑問があればhttp://www.cnblogs.com/fish-li/archive/2012/06/10/2544087.html#_label0 aspを見ることができます.Netpageの件はhttp://www.cnblogs.com/fish-li/archive/2011/07/17/2108884.htmlとformフォームを詳しく話します.
次はコアコードです
他にもアナログ認証、返送_EVENTTARGET,__EVENTARGUMENT,__VIEWSTATE,__EVENTVALLIDATIONの4つのパラメータデータは、最後の1つがない可能性がありますが、いつあるか、いつないかは、あまり言いません.ここで私はhttprequestとhttpresponseを使って、実は直接WebClientを使うのも同じで、最も主要なのは全体の流れのどのように歩くことを理解して、自分でどのように処理して、どのように自動カードを作ることについて、直接Timerをプラスして終わります、カードを打つ任務をよく管理するためにquartzを考えることができます.Netというタスクはオープンソースコンポーネントを計画します.サイトのサインをしたい人もいれば、クッキーの保存や画像検証コードの処理など、他のものもあるかもしれません.cookieは処理が上手ですが、検証コードの画像はどのように処理しても私はしたことがありません.大神が教えてくれることを望んでいます.感謝に堪えません.
まずユーザーの操作プロセスをカードしたいのですが、カードを打つページにログイン->クリック「通勤カードを打つ」(「退勤カードを打つ」)->完了.流れは簡単で、IEを開けてhttpclientなどのクラスで操作しないと、注目するものはアイデンティティ認証とフォーム提出(ボタントリガーイベント)があるはずです.ローカルエリアネットワーク、会社は自分の仕事のドメインがあって、その認証はWINDOWSで、提出したデータはボタンの名前に原始のビューと検証のビューを加えるべきで、どうしてこれらのデータで、これはASPだと思います.NETの基本的な、疑問があればhttp://www.cnblogs.com/fish-li/archive/2012/06/10/2544087.html#_label0 aspを見ることができます.Netpageの件は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, 0, 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 > 0)
{
result = temp.Substring(tempindex + 14, 20);
}
}
}
catch (Exception ex)
{
return "";
}
return result;
}
他にもアナログ認証、返送_EVENTTARGET,__EVENTARGUMENT,__VIEWSTATE,__EVENTVALLIDATIONの4つのパラメータデータは、最後の1つがない可能性がありますが、いつあるか、いつないかは、あまり言いません.ここで私はhttprequestとhttpresponseを使って、実は直接WebClientを使うのも同じで、最も主要なのは全体の流れのどのように歩くことを理解して、自分でどのように処理して、どのように自動カードを作ることについて、直接Timerをプラスして終わります、カードを打つ任務をよく管理するためにquartzを考えることができます.Netというタスクはオープンソースコンポーネントを計画します.サイトのサインをしたい人もいれば、クッキーの保存や画像検証コードの処理など、他のものもあるかもしれません.cookieは処理が上手ですが、検証コードの画像はどのように処理しても私はしたことがありません.大神が教えてくれることを望んでいます.感謝に堪えません.