官网上的iPhone4,便宜,但不好得
本人不是果粉,但也幻想弄上一个两个倒手赚点小钱
总刷网页太麻烦
自己写个App吧
很简单的应用
思路,官网上正常情况下有两个 iPhone4的“暂无供应”,只要查到有两个这种字符串,就是没放出,否则呢,嘿嘿。。。
窗体设计部分:


namespace
IP4Killer
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null ;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing"> true if managed resources should be disposed; otherwise, false. </param>
protected override void Dispose( bool disposing)
{
if (disposing && (components != null ))
{
components.Dispose();
}
base .Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this .components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager( typeof (Form1));
this .linkLabel1 = new System.Windows.Forms.LinkLabel();
this .label1 = new System.Windows.Forms.Label();
this .linkLabel2 = new System.Windows.Forms.LinkLabel();
this .label2 = new System.Windows.Forms.Label();
this .linkLabel3 = new System.Windows.Forms.LinkLabel();
this .label3 = new System.Windows.Forms.Label();
this .linkLabel4 = new System.Windows.Forms.LinkLabel();
this .notifyIcon1 = new System.Windows.Forms.NotifyIcon( this .components);
this .SuspendLayout();
//
// linkLabel1
//
this .linkLabel1.AutoSize = true ;
this .linkLabel1.Location = new System.Drawing.Point( 12 , 9 );
this .linkLabel1.Name = " linkLabel1 " ;
this .linkLabel1.Size = new System.Drawing.Size( 77 , 12 );
this .linkLabel1.TabIndex = 0 ;
this .linkLabel1.TabStop = true ;
this .linkLabel1.Text = " Printf@Soway " ;
//
// label1
//
this .label1.AutoSize = true ;
this .label1.Location = new System.Drawing.Point( 42 , 82 );
this .label1.Name = " label1 " ;
this .label1.Size = new System.Drawing.Size( 59 , 12 );
this .label1.TabIndex = 1 ;
this .label1.Text = " 开始时间: " ;
//
// linkLabel2
//
this .linkLabel2.AutoSize = true ;
this .linkLabel2.Location = new System.Drawing.Point( 108 , 82 );
this .linkLabel2.Name = " linkLabel2 " ;
this .linkLabel2.Size = new System.Drawing.Size( 65 , 12 );
this .linkLabel2.TabIndex = 2 ;
this .linkLabel2.TabStop = true ;
this .linkLabel2.Text = " linkLabel2 " ;
//
// label2
//
this .label2.AutoSize = true ;
this .label2.Location = new System.Drawing.Point( 44 , 118 );
this .label2.Name = " label2 " ;
this .label2.Size = new System.Drawing.Size( 59 , 12 );
this .label2.TabIndex = 3 ;
this .label2.Text = " 刷新次数: " ;
//
// linkLabel3
//
this .linkLabel3.AutoSize = true ;
this .linkLabel3.Location = new System.Drawing.Point( 108 , 118 );
this .linkLabel3.Name = " linkLabel3 " ;
this .linkLabel3.Size = new System.Drawing.Size( 65 , 12 );
this .linkLabel3.TabIndex = 4 ;
this .linkLabel3.TabStop = true ;
this .linkLabel3.Text = " linkLabel3 " ;
//
// label3
//
this .label3.AutoSize = true ;
this .label3.Location = new System.Drawing.Point( 42 , 153 );
this .label3.Name = " label3 " ;
this .label3.Size = new System.Drawing.Size( 59 , 12 );
this .label3.TabIndex = 5 ;
this .label3.Text = " 秒杀次数: " ;
//
// linkLabel4
//
this .linkLabel4.AutoSize = true ;
this .linkLabel4.Location = new System.Drawing.Point( 108 , 153 );
this .linkLabel4.Name = " linkLabel4 " ;
this .linkLabel4.Size = new System.Drawing.Size( 65 , 12 );
this .linkLabel4.TabIndex = 6 ;
this .linkLabel4.TabStop = true ;
this .linkLabel4.Text = " linkLabel4 " ;
//
// notifyIcon1
//
this .notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject( " notifyIcon1.Icon " )));
this .notifyIcon1.Text = " iPhone4 秒杀器 " ;
this .notifyIcon1.Visible = true ;
this .notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler( this .notifyIcon1_MouseClick);
//
// Form1
//
this .AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this .AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this .ClientSize = new System.Drawing.Size( 284 , 262 );
this .Controls.Add( this .linkLabel4);
this .Controls.Add( this .label3);
this .Controls.Add( this .linkLabel3);
this .Controls.Add( this .label2);
this .Controls.Add( this .linkLabel2);
this .Controls.Add( this .label1);
this .Controls.Add( this .linkLabel1);
this .FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this .Icon = ((System.Drawing.Icon)(resources.GetObject( " $this.Icon " )));
this .MaximizeBox = false ;
this .Name = " Form1 " ;
this .Text = " iPhone4秒杀器 " ;
this .FormClosing += new System.Windows.Forms.FormClosingEventHandler( this .Form1_FormClosing);
this .Load += new System.EventHandler( this .Form1_Load);
this .SizeChanged += new System.EventHandler( this .Form1_SizeChanged);
this .ResumeLayout( false );
this .PerformLayout();
}
#endregion
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.LinkLabel linkLabel2;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.LinkLabel linkLabel3;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.LinkLabel linkLabel4;
private System.Windows.Forms.NotifyIcon notifyIcon1;
}
}
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null ;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing"> true if managed resources should be disposed; otherwise, false. </param>
protected override void Dispose( bool disposing)
{
if (disposing && (components != null ))
{
components.Dispose();
}
base .Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this .components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager( typeof (Form1));
this .linkLabel1 = new System.Windows.Forms.LinkLabel();
this .label1 = new System.Windows.Forms.Label();
this .linkLabel2 = new System.Windows.Forms.LinkLabel();
this .label2 = new System.Windows.Forms.Label();
this .linkLabel3 = new System.Windows.Forms.LinkLabel();
this .label3 = new System.Windows.Forms.Label();
this .linkLabel4 = new System.Windows.Forms.LinkLabel();
this .notifyIcon1 = new System.Windows.Forms.NotifyIcon( this .components);
this .SuspendLayout();
//
// linkLabel1
//
this .linkLabel1.AutoSize = true ;
this .linkLabel1.Location = new System.Drawing.Point( 12 , 9 );
this .linkLabel1.Name = " linkLabel1 " ;
this .linkLabel1.Size = new System.Drawing.Size( 77 , 12 );
this .linkLabel1.TabIndex = 0 ;
this .linkLabel1.TabStop = true ;
this .linkLabel1.Text = " Printf@Soway " ;
//
// label1
//
this .label1.AutoSize = true ;
this .label1.Location = new System.Drawing.Point( 42 , 82 );
this .label1.Name = " label1 " ;
this .label1.Size = new System.Drawing.Size( 59 , 12 );
this .label1.TabIndex = 1 ;
this .label1.Text = " 开始时间: " ;
//
// linkLabel2
//
this .linkLabel2.AutoSize = true ;
this .linkLabel2.Location = new System.Drawing.Point( 108 , 82 );
this .linkLabel2.Name = " linkLabel2 " ;
this .linkLabel2.Size = new System.Drawing.Size( 65 , 12 );
this .linkLabel2.TabIndex = 2 ;
this .linkLabel2.TabStop = true ;
this .linkLabel2.Text = " linkLabel2 " ;
//
// label2
//
this .label2.AutoSize = true ;
this .label2.Location = new System.Drawing.Point( 44 , 118 );
this .label2.Name = " label2 " ;
this .label2.Size = new System.Drawing.Size( 59 , 12 );
this .label2.TabIndex = 3 ;
this .label2.Text = " 刷新次数: " ;
//
// linkLabel3
//
this .linkLabel3.AutoSize = true ;
this .linkLabel3.Location = new System.Drawing.Point( 108 , 118 );
this .linkLabel3.Name = " linkLabel3 " ;
this .linkLabel3.Size = new System.Drawing.Size( 65 , 12 );
this .linkLabel3.TabIndex = 4 ;
this .linkLabel3.TabStop = true ;
this .linkLabel3.Text = " linkLabel3 " ;
//
// label3
//
this .label3.AutoSize = true ;
this .label3.Location = new System.Drawing.Point( 42 , 153 );
this .label3.Name = " label3 " ;
this .label3.Size = new System.Drawing.Size( 59 , 12 );
this .label3.TabIndex = 5 ;
this .label3.Text = " 秒杀次数: " ;
//
// linkLabel4
//
this .linkLabel4.AutoSize = true ;
this .linkLabel4.Location = new System.Drawing.Point( 108 , 153 );
this .linkLabel4.Name = " linkLabel4 " ;
this .linkLabel4.Size = new System.Drawing.Size( 65 , 12 );
this .linkLabel4.TabIndex = 6 ;
this .linkLabel4.TabStop = true ;
this .linkLabel4.Text = " linkLabel4 " ;
//
// notifyIcon1
//
this .notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject( " notifyIcon1.Icon " )));
this .notifyIcon1.Text = " iPhone4 秒杀器 " ;
this .notifyIcon1.Visible = true ;
this .notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler( this .notifyIcon1_MouseClick);
//
// Form1
//
this .AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this .AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this .ClientSize = new System.Drawing.Size( 284 , 262 );
this .Controls.Add( this .linkLabel4);
this .Controls.Add( this .label3);
this .Controls.Add( this .linkLabel3);
this .Controls.Add( this .label2);
this .Controls.Add( this .linkLabel2);
this .Controls.Add( this .label1);
this .Controls.Add( this .linkLabel1);
this .FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this .Icon = ((System.Drawing.Icon)(resources.GetObject( " $this.Icon " )));
this .MaximizeBox = false ;
this .Name = " Form1 " ;
this .Text = " iPhone4秒杀器 " ;
this .FormClosing += new System.Windows.Forms.FormClosingEventHandler( this .Form1_FormClosing);
this .Load += new System.EventHandler( this .Form1_Load);
this .SizeChanged += new System.EventHandler( this .Form1_SizeChanged);
this .ResumeLayout( false );
this .PerformLayout();
}
#endregion
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.LinkLabel linkLabel2;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.LinkLabel linkLabel3;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.LinkLabel linkLabel4;
private System.Windows.Forms.NotifyIcon notifyIcon1;
}
}
逻辑部分:


using
System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace IP4Killer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click( object sender, EventArgs e)
{
}
bool Run = false ;
int FreshTimes = 0 ;
int OKTimes = 0 ;
private Encoding GetEncoding( string html)
{
string pattern = @" (?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+) " ;
string charset = Regex.Match(html, pattern).Groups[ " charset " ].Value;
try { return Encoding.GetEncoding(charset); }
catch (ArgumentException) { return null ; }
}
private System.Text.Encoding GetPageEncoding( string url)
{
System.Text.Encoding encod = System.Text.Encoding.UTF8;
try
{
System.Net.WebRequest request = System.Net.WebRequest.Create(url);
System.Net.WebResponse response = request.GetResponse();
var i = response.Headers.AllKeys;
System.IO.Stream stream = response.GetResponseStream();
byte [] header = new byte [ 1024 ];
stream.Read(header, 0 , header.Length);
string head = Encoding.Default.GetString(header);
stream.Close(); stream.Dispose();
string patternEncode = @" (?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+) " ;
Regex regEncode = new Regex(patternEncode, RegexOptions.IgnoreCase);
Match match = regEncode.Match(head);
if (match.Success) {
encod = System.Text.Encoding.GetEncoding(match.Groups[ " charset " ].Value);
}
}
catch { } return encod;
}
private void Work()
{
Run = true ;
String url = " http://store.apple.com/cn/browse/home/shop_iphone/family/iphone " ;
System.Net.WebClient aWebClient = new System.Net.WebClient();
aWebClient.Encoding = GetPageEncoding(url);
String Current = "" ;
String Last = "" ;
int Times = 1 ;
int temp = 0 ;
while (Run)
{
Current = aWebClient.DownloadString( " http://store.apple.com/cn/browse/home/shop_iphone/family/iphone " );
// Match match = regEncode.Match(Current);
String[] strs = Current.Split( new String[] { " 暂无供应 " }, StringSplitOptions.RemoveEmptyEntries);
// var current = strs.Length;
if (strs.Length != temp )
{
if (temp != 0 )
{
OKTimes ++ ;
try
{
System.Diagnostics.Process.Start(url);
System.IO.File.WriteAllLines(System.DateTime.Now.ToString( " yyyy年MM月dd日HHmmss_ " ) + OKTimes.ToString() + " .html " , new String[] { Current });
}
catch { }
}
temp = strs.Length;
}
FreshTimes ++ ;
if (Run)
this .Invoke( new doo( this .updateTimes));
}
}
private void Form1_Load( object sender, EventArgs e)
{
this .linkLabel2.Text = System.DateTime.Now.ToString( " yyyy年MM月dd日 HH:mm:ss " );
updateTimes();
new System.Threading.Thread( new System.Threading.ThreadStart(Work)).Start();
}
private delegate void doo ();
private void updateTimes()
{
try
{
linkLabel3.Text = FreshTimes.ToString();
linkLabel4.Text = OKTimes.ToString();
this .notifyIcon1.Text = " 刷新: " + FreshTimes.ToString() + " 次,秒杀: " + OKTimes.ToString();
}
catch { }
}
private void Form1_FormClosing( object sender, FormClosingEventArgs e)
{
Run = false ;
}
private void Form1_SizeChanged( object sender, EventArgs e)
{
switch ( this .WindowState)
{
case FormWindowState.Normal:
this .notifyIcon1.Visible = false ;
this .ShowInTaskbar = true ;
break ;
case FormWindowState.Minimized:
this .notifyIcon1.Visible = true ;
this .ShowInTaskbar = false ;
break ;
case FormWindowState.Maximized:
this .notifyIcon1.Visible = false ;
this .ShowInTaskbar = true ;
break ;
}
}
private void notifyIcon1_MouseClick( object sender, MouseEventArgs e)
{
this .WindowState = FormWindowState.Normal;
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace IP4Killer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click( object sender, EventArgs e)
{
}
bool Run = false ;
int FreshTimes = 0 ;
int OKTimes = 0 ;
private Encoding GetEncoding( string html)
{
string pattern = @" (?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+) " ;
string charset = Regex.Match(html, pattern).Groups[ " charset " ].Value;
try { return Encoding.GetEncoding(charset); }
catch (ArgumentException) { return null ; }
}
private System.Text.Encoding GetPageEncoding( string url)
{
System.Text.Encoding encod = System.Text.Encoding.UTF8;
try
{
System.Net.WebRequest request = System.Net.WebRequest.Create(url);
System.Net.WebResponse response = request.GetResponse();
var i = response.Headers.AllKeys;
System.IO.Stream stream = response.GetResponseStream();
byte [] header = new byte [ 1024 ];
stream.Read(header, 0 , header.Length);
string head = Encoding.Default.GetString(header);
stream.Close(); stream.Dispose();
string patternEncode = @" (?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+) " ;
Regex regEncode = new Regex(patternEncode, RegexOptions.IgnoreCase);
Match match = regEncode.Match(head);
if (match.Success) {
encod = System.Text.Encoding.GetEncoding(match.Groups[ " charset " ].Value);
}
}
catch { } return encod;
}
private void Work()
{
Run = true ;
String url = " http://store.apple.com/cn/browse/home/shop_iphone/family/iphone " ;
System.Net.WebClient aWebClient = new System.Net.WebClient();
aWebClient.Encoding = GetPageEncoding(url);
String Current = "" ;
String Last = "" ;
int Times = 1 ;
int temp = 0 ;
while (Run)
{
Current = aWebClient.DownloadString( " http://store.apple.com/cn/browse/home/shop_iphone/family/iphone " );
// Match match = regEncode.Match(Current);
String[] strs = Current.Split( new String[] { " 暂无供应 " }, StringSplitOptions.RemoveEmptyEntries);
// var current = strs.Length;
if (strs.Length != temp )
{
if (temp != 0 )
{
OKTimes ++ ;
try
{
System.Diagnostics.Process.Start(url);
System.IO.File.WriteAllLines(System.DateTime.Now.ToString( " yyyy年MM月dd日HHmmss_ " ) + OKTimes.ToString() + " .html " , new String[] { Current });
}
catch { }
}
temp = strs.Length;
}
FreshTimes ++ ;
if (Run)
this .Invoke( new doo( this .updateTimes));
}
}
private void Form1_Load( object sender, EventArgs e)
{
this .linkLabel2.Text = System.DateTime.Now.ToString( " yyyy年MM月dd日 HH:mm:ss " );
updateTimes();
new System.Threading.Thread( new System.Threading.ThreadStart(Work)).Start();
}
private delegate void doo ();
private void updateTimes()
{
try
{
linkLabel3.Text = FreshTimes.ToString();
linkLabel4.Text = OKTimes.ToString();
this .notifyIcon1.Text = " 刷新: " + FreshTimes.ToString() + " 次,秒杀: " + OKTimes.ToString();
}
catch { }
}
private void Form1_FormClosing( object sender, FormClosingEventArgs e)
{
Run = false ;
}
private void Form1_SizeChanged( object sender, EventArgs e)
{
switch ( this .WindowState)
{
case FormWindowState.Normal:
this .notifyIcon1.Visible = false ;
this .ShowInTaskbar = true ;
break ;
case FormWindowState.Minimized:
this .notifyIcon1.Visible = true ;
this .ShowInTaskbar = false ;
break ;
case FormWindowState.Maximized:
this .notifyIcon1.Visible = false ;
this .ShowInTaskbar = true ;
break ;
}
}
private void notifyIcon1_MouseClick( object sender, MouseEventArgs e)
{
this .WindowState = FormWindowState.Normal;
}
}
}