這個(gè)軟件的原理是用HttpWebRequest提交帶驗(yàn)證碼的網(wǎng)站。
要用post提交帶驗(yàn)證碼的地址。先用HttpWebRequest進(jìn)行請(qǐng)求以得到cookie,并保存起來在后面獲取驗(yàn)證碼的時(shí)候使用.
該軟件是用C#編寫的,以下是程序源碼:
using System;
using System.Drawing;
using System.IO;
using System.Net;
using System.Text;
using System.Windows.Forms;
namespace 用POST提交帶驗(yàn)證碼的網(wǎng)站
{
public partial class FrmMain : Form
{
public FrmMain()
{
InitializeComponent();
}
//用于保存cookie
CookieContainer cc = new CookieContainer();
//獲取cookie
private void GetCookie()
{
try
{
//要post提交的地址。先用HttpWebRequest進(jìn)行請(qǐng)求以得到cookie,并保存起來在后面獲取驗(yàn)證碼的時(shí)候使用
Uri uri = new Uri("http://61.142.253.40:8085/Login.aspx");
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//將當(dāng)前cookie存儲(chǔ)到CookieContainer中
cc.Add(response.Cookies);
response.Close();
}
catch { }
}
//讀取驗(yàn)證碼圖片
private void GetImage()
{
try
{
//驗(yàn)證碼地址
Uri uri = new Uri("http://61.142.253.40:8085/CheckCode.aspx");
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
//設(shè)置前面請(qǐng)求時(shí)保存下來的cookie,以保證兩個(gè)請(qǐng)求是相同的,才不會(huì)出現(xiàn)驗(yàn)證碼不同步的問題
request.CookieContainer = cc;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//得到驗(yàn)證碼數(shù)據(jù)流
Stream resStream = response.GetResponseStream();
//初始化Bitmap圖片并在pictureBox1控件中顯示
Bitmap image = new Bitmap(resStream);
this.pictureBox1.Image = image;
}
catch { }
}
/// <summary>
/// 提交數(shù)據(jù)
/// </summary>
/// <param name="userName">用戶名</param>
/// <param name="passWord">密碼</param>
/// <param name="code">驗(yàn)證碼</param>
/// <returns>提交數(shù)據(jù)后的返回值</returns>
private string SubmitData(string userName, string passWord, string code)
{
try
{
string url = string.Format("http://61.142.253.40:8085/Ajax.aspx?action=Login&Name={0}&Password={1}&ucode={2}", userName, passWord, code);
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
//設(shè)置cookie,保證請(qǐng)求同步
request.CookieContainer = cc;
//獲取響應(yīng)
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.OK)
{
//注意這里要根據(jù)網(wǎng)站編碼格式變換
using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")))
{
return sr.ReadToEnd();
}
}
else
{
return response.StatusCode.ToString();
}
}
catch
{
return null;
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnSubmit_Click(object sender, EventArgs e)
{
txtResult.Text = SubmitData(txtUser.Text, txtPassword.Text, txtCode.Text);
}
private void lbWebSite_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start("http://www.weixq.cn");
System.Diagnostics.Process.Start("http://www.jfkjw.com");
}
catch { }
}
private void lbQQ_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start("http://wpa.qq.com/msgrd?v=3&uin=240452625&site=qq&menu=yes");
}
catch { }
}
private void btnRefresh_Click(object sender, EventArgs e)
{
FrmMain_Load(null, null);
}
private void FrmMain_Load(object sender, EventArgs e)
{
//獲取cookie和驗(yàn)證碼圖片
GetCookie();
GetImage();
}
}
}
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版