private void backgroundWorkerLoadUsers_DoWork(object sender, DoWorkEventArgs e) { String path = Application.StartupPath + "\\config.txt"; if (mUserManager.loadUsers(path)) { List <String> phones = mUserManager.getKeys(); for (int i = 0; i < phones.Count; i++) { UserManager.User u = mUserManager.mMapUser[phones[i]]; u._cookies = login(u._phone, u._pwd); if (u._cookies.Count > 0) { u._status = UserManager.STATUS_COOKIE_READY; } int per = i * 100 / phones.Count; this.backgroundWorkerLoadUsers.ReportProgress(per, u._phone); } e.Result = "OK:读取成功"; } else { e.Result = "ER:读取失败"; } }
private void backgroundWorkerExport_DoWork(object sender, DoWorkEventArgs e) { try { String fileName = DateTime.Now.ToString("yyyy年MM月dd日_HHmmss") + ".txt"; FileStream aFile = new FileStream(fileName, FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(aFile); List <String> phones = mUserManager.getKeys(); for (int i = 0; i < phones.Count; i++) { UserManager.User u = mUserManager.mMapUser[phones[i]]; List <String> codes = u._codes; if (codes.Count > 0) { for (int j = 0; j < codes.Count; j++) { String str = u._phone + " " + DateTime.Now.ToString("yyyy年MM月dd日") + " " + codes[j]; sw.WriteLine(str); } } } sw.Close(); e.Result = fileName; } catch (IOException ex) { e.Result = "ER:失败"; return; } }
private void backgroundWorkerResult_DoWork(object sender, DoWorkEventArgs e) { String url = "http://sale.dooyo.cn/tuan/account/myVoucher.html?tradeId=queryVoucherListAcc"; String keyword = DateTime.Now.ToString("yyyy年MM月dd日"); List <String> phones = mUserManager.getKeys(); for (int i = 0; i < phones.Count; i++) { UserManager.User u = mUserManager.mMapUser[phones[i]]; //查看订单页面 HttpWebResponse response = HttpWebResponseUtility.CreateGetHttpResponse(url, null, null, u._cookies); System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream()); String content = sr.ReadToEnd(); //这里的content就是网页内容了 sr.Close(); response.Close(); MatchCollection mc = GetValue(content, keyword, "<!"); u._resultCount = mc.Count; for (int k = 0; k < mc.Count; k++) { String code = mc[k].Value.Replace("<td>", "").Replace("</td>", "").Replace("\r\n", "").Trim(); if (!u._codes.Contains(code)) { u._codes.Add(code); } } } }
void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker bw = sender as BackgroundWorker; UserManager.User u = e.Argument as UserManager.User; u._msg = "开始..."; int count = 0; while (u._status != UserManager.STATUS_COOKIE_READY) { // Monitor.Enter(oLock); String msg = miaoshaWork(u); // Monitor.Exit(oLock); if (msg.StartsWith("DONE")) { if (u._status == UserManager.STATUS_ONE) { u._status = UserManager.STATUS_TWO; return; } else { u._status = UserManager.STATUS_ONE; } } count = count + 1; u._msg = "开始..." + count + " " + msg; String logMsg = "用户" + u._phone + " 第" + count + "次尝试," + msg; Thread.Sleep(100); bw.ReportProgress(1, logMsg); } }
private void stopWorker(UserManager.User u) { if (mWorkers.ContainsKey(u._phone)) { u._status = UserManager.STATUS_COOKIE_READY; BackgroundWorker bw = mWorkers[u._phone]; bw.CancelAsync(); } }
public MiaoUserControl(UserManager.User u, String pid, int tabindex) { mUser = u; mProductID = pid; mTryCnt = 0; mSuccCnt = 0; mTabIndex = tabindex; InitializeComponent(); }
private void ManualMiaoForm_Load(object sender, EventArgs e) { List <String> phones = mUserManager.getKeys(); for (int i = 0; i < phones.Count; i++) { UserManager.User u = mUserManager.mMapUser[phones[i]]; MiaoUserControl muc = new MiaoUserControl(u, mProductID, i); muc.MsgEvent += new MiaoUserControl.MsgEventDelegate(muc_MsgEvent); this.flowLayoutPanel1.Controls.Add(muc); } }
private void listViewUser_DoubleClick(object sender, EventArgs e) { if (this.listViewUser.SelectedItems.Count > 0) { ListViewItem lvi = this.listViewUser.SelectedItems[0]; UserManager.User u = lvi.Tag as UserManager.User; //if (u._unpayCount>0) { WebViewForm wvf = new WebViewForm(u); wvf.Show(); } } }
private void backgroundWorkerUnpay_DoWork(object sender, DoWorkEventArgs e) { String url = "http://sale.dooyo.cn/tuan/account/myOrder.html?tradeId=queryAccOrderList"; String keyword = "未支付"; List <String> phones = mUserManager.getKeys(); for (int i = 0; i < phones.Count; i++) { UserManager.User u = mUserManager.mMapUser[phones[i]]; //查看订单页面 HttpWebResponse response = HttpWebResponseUtility.CreateGetHttpResponse(url, null, null, u._cookies); System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream()); String content = sr.ReadToEnd(); //这里的content就是网页内容了 sr.Close(); response.Close(); u._unpayCount = Regex.Matches(content, keyword).Count; //if (content.Contains(keyword)) //{ // u._unpayCount = 1; //} //2013年06月19日 } }
private void startWorker(UserManager.User u) { if (mWorkers.ContainsKey(u._phone)) { BackgroundWorker bw = mWorkers[u._phone]; if (!bw.IsBusy) { u._status = UserManager.STATUS_START; bw.RunWorkerAsync(u); } } else { BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.WorkerReportsProgress = true; bw.WorkerSupportsCancellation = true; bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); mWorkers.Add(u._phone, bw); u._status = UserManager.STATUS_START; bw.RunWorkerAsync(u); } }
String miaoshaWork(UserManager.User u) { try { String msg = ""; Encoding encoding = Encoding.GetEncoding("gb2312"); CookieCollection cookieCollection = u._cookies; //获取验证码 Random ra = new Random(); String getCodeURL = "http://sale.dooyo.cn/tuan/code.html?tradeId=getMiaoShaCode&t=" + ra.Next(); HttpWebResponse response = HttpWebResponseUtility.CreateGetHttpResponse(getCodeURL, null, null, cookieCollection); if (response.StatusCode == HttpStatusCode.OK) { System.IO.Stream resStream = response.GetResponseStream(); System.Drawing.Image i = Image.FromStream(resStream); CheckCodeParser mParser = u._parser; String checkCode = mParser.parse(i); response.Close(); //log("获取验证码:" + checkCode); try { //验证验证码 // url:"/tuan/miao/miaoindex.html?tradeId=checkCodeForImmediately", String checkCodeURL = "http://sale.dooyo.cn/tuan/miao/miaoindex.html?tradeId=checkCode"; //checkCodeURL = "http://sale.dooyo.cn/tuan/miao/miaoindex.html?tradeId=checkCodeForImmediately"; IDictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("code", checkCode); parameters.Add("product_id", mProductID); HttpWebResponse response2 = HttpWebResponseUtility.CreatePostHttpResponse( checkCodeURL, parameters, null, null, encoding, cookieCollection, true); if (response2.StatusCode == HttpStatusCode.OK) { // log("验证验证码:" + checkCode); System.IO.StreamReader sr = new System.IO.StreamReader(response2.GetResponseStream()); String content = sr.ReadToEnd(); //这里的content就是网页内容了 sr.Close(); response2.Close(); //log("验证验证码:" + content); if (content.Contains("false")) { //验证失败 msg = "ER:验证码错误"; } else { msg = "验证成功"; //提交form String submitURL = "http://sale.dooyo.cn/tuan/miao/miaoConfirmOrder.html?tradeId=toMiaoOrder&product_id=" + mProductID; IDictionary <string, string> parameters2 = new Dictionary <string, string>(); parameters2.Add("code", checkCode); parameters2.Add("vCode", checkCode); parameters2.Add("userOrdersCount", "0"); parameters2.Add("maxOrdersCount", "2");//2 parameters2.Add("payTypeRadio", "ABC2"); //parameters2.Add("activityCode", "1");//2 //parameters2.Add("max_purchase_profit", "0.0");//2 //parameters2.Add("mobile", u._phone);//2 //parameters2.Add("order_sizecolor", "");//2 parameters2.Add("product_id", this.mProductID);//2 // parameters2.Add("product_props", "");//2 //parameters2.Add("quantity", "1");//2 // parameters2.Add("repeatOrderId", "");//2 // parameters2.Add("token", "1375190998404");//2 HttpWebResponse response3 = HttpWebResponseUtility.CreatePostHttpResponse( submitURL, parameters2, null, null, encoding, cookieCollection, true); if (response3.StatusCode == HttpStatusCode.OK) { //log("提交form"); System.IO.StreamReader sr3 = new System.IO.StreamReader(response3.GetResponseStream()); String content3 = sr3.ReadToEnd(); //这里的content就是网页内容了 sr3.Close(); response3.Close(); if (content3.Contains("抱歉")) { msg = "ER:提交表单失败啦"; } else { //下单 IDictionary <string, string> buyParams = new Dictionary <string, string>(); buyParams.Add("code", checkCode); buyParams.Add("vCode", checkCode); buyParams.Add("mobile", u._phone); //buyParams.Add("payTypeRadio", "1"); buyParams.Add("product_id", this.mProductID); buyParams.Add("product_props", ""); buyParams.Add("product_type", "0"); buyParams.Add("payTypeRadio", "ABC2"); buyParams.Add("quantity", "1"); buyParams.Add("userOrdersCount", "1"); buyParams.Add("maxOrdersCount", "10"); HttpWebResponse responseBuy = HttpWebResponseUtility.CreatePostHttpResponse( mBuyURL, buyParams, null, null, encoding, cookieCollection, true); if (responseBuy.StatusCode == HttpStatusCode.OK) { //log("下单"); System.IO.StreamReader srBuy = new System.IO.StreamReader(responseBuy.GetResponseStream()); String contentBuy = srBuy.ReadToEnd(); //这里的content就是网页内容了 srBuy.Close(); //成功啦 if (contentBuy.Contains("抱歉") || contentBuy.Contains("未开始秒杀")) { msg = "ER:下单失败啦"; } else { msg = "DONE:快付款吧"; } } else { //log("下单错误,返回code:" + responseBuy.StatusCode); } } //if(!content3.Contains("抱歉")) } //if (response3.StatusCode == HttpStatusCode.OK) else { //log("提交form错误,返回code:" + response3.StatusCode); } } } } catch (Exception ex) { String str = ex.ToString(); str = "ER:" + str; } } mStr = msg; return(msg); } catch (Exception ex) { String str = "ER:出错了" + ex.ToString(); return(str); } }
public WebViewForm(UserManager.User u) { InitializeComponent(); mUser = u; }