自动充值平台开发进程之联通卡密一最终实现

您所在的位置:网站首页 联通卡密充值电话 自动充值平台开发进程之联通卡密一最终实现

自动充值平台开发进程之联通卡密一最终实现

2024-07-09 15:43| 来源: 网络整理| 查看: 265

最近一直忙于移动,联通,电信充值平台开发,需要做的软件也在特别多,有13800138000,空中充值,移动手机支付,联通卡密验证与提交,和三方接口的对接,

其中三方接口应该是最简单的,三方对口,如易宝,欧飞等,其中13800138000是通过猫池来进行语言拨号,来完成充值,我们不像别的大公司有专门的接口,移动手机支付和联通卡密,我们都做的是辅助软件来完成.

 

现把思路整理一下做个记录,方便日后,也给需要这方面的朋友一个参考吧

 

 

在开发之前,列一下我所用的到工个

开发工具和数据库不用多说 vs2010+sql2005,

还有抓包工具,HttpAnalyzerFullV5和WSExplorer,这两个工具的破解版网上一搜就能搜出一把把。

 

联通卡密辅助软件开发的几个重点

1.验证码,大部分人在验证码这块会卡住,验证码没过自动提交根本就谈不上,过验证码对于没有接触这块的人来说需要时间一研究,网上也有叫卖的

2.抓包,只有抓到数据包后,合理分的分析出有用的数据,才能去自动提交我们想要的数据。

我抓到的数据包如下图

HttpAnalyzerFullV5这个工具还是具好用的,有浏览器插件版和独立版

下面为独立版

插件版

开始抓包

在上面这个图中就是我用抓包工具抓到的数据,里面可以清楚的看到,需要post过来的参数名和对应的值,以及一起提交的cookie等相应的数据

 充值的手机号,充值的卡密,和验证码都在里面了呵呵,

今天就写到这里,下次再写

 

 

 

前两篇已把相应的准备工作和功能说明列了一下,今天就把详细的实现写一下,以后的将把13800138000的语音拨号系统,和手机短信群发的的实现也发上。

 

 

 

开始这次的内容。

首先就是需要用到模拟提交的两个类

 HttpHead.cs 这个类(其实是结构)它的主要功能就是封装了Http请求的一个头信息

using System; using System.Net; using System.Drawing;

namespace NetHelper {     ///     /// Http头信息设置     ///     public struct HttpHead {         public String Host;    //主机         public String Referer;   //引用         public CookieCollection Cookies;  //cookies容器         public String PostData;       //请求的传给服务器的参数         public String Method;        //请求方式常见的POST,GET         public String ContentType;                public String Html;         //响应的html代码         public String AbsoluteUri;               public Bitmap Image;        //如果请求的是图片,这里返回一个Bitmap对象         public Boolean IsImage;       //是否为图片     } }

HttpRequest.cs   //用来发起提交的

namespace NetHelper {     using System;     using System.Drawing;     using System.IO;     using System.Net;     using System.Text;

    ///     /// Http请求封装类,包括 POST,GET请求     /// 幸福海     ///     public class HttpRequest {         private CookieContainer cookies;         public CookieContainer Cookies {             get { return this.cookies; }             set { this.cookies = value; }         }         ///         /// Http请求         /// 幸福海         ///         public HttpRequest() {             this.Cookies = new CookieContainer();         }         ///         /// 发送HTTP请求         ///         /// HTTP头结构         ///         public String Send(ref HttpHead Head) {             HttpWebResponse Response = null;             String val = "";             try {                 HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create(Head.Host);                 Request.ProtocolVersion = new Version("1.1");                 Request.Referer = Head.Referer;                 Request.Accept = "*/*";                 Request.CookieContainer = this.Cookies;                 Request.Timeout = 100000;                 Request.Headers.Add("Accept-Language", "zh-CN");                 Request.KeepAlive = true;                 Request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1;.NET CLR 2.0.50727)";

                if (Head.Method.ToLower() == "post") {                     Request.Method = "POST";                     if (String.IsNullOrEmpty(Head.ContentType)) {                         Request.ContentType = "application/x-www-form-urlencoded";                     }                     else {                         Request.ContentType = Head.ContentType;                     }                     if (Head.PostData != null && Head.PostData.Length > 0) {                         Byte[] byteData = Encoding.Default.GetBytes(Head.PostData);                         Request.ContentLength = byteData.Length;                         Stream WriteStream = Request.GetRequestStream();                         WriteStream.Write(byteData, 0, byteData.Length);                         WriteStream.Close();                     }                 }                 try {                     Response = (HttpWebResponse)Request.GetResponse();                 }                 catch (WebException ex) {                     if (ex.Response != null) {                         Response = (HttpWebResponse)ex.Response;                     }                     else {                         return "网络异常";                     }                 }                 foreach (Cookie cookie in Request.CookieContainer.GetCookies(Request.RequestUri)) {                     this.Cookies.Add(cookie);                 }                 Stream dataStream = Response.GetResponseStream();                 if (Head.IsImage) {                     Bitmap img = new Bitmap(dataStream);                     Head.Image = img;                     return "";                 }                 else {                     String encode = Response.CharacterSet;                     if (encode == null) encode = "gb2312";                     if (encode.ToLower() == "iso-8859-1") encode = "gb2312";                     StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding(encode));                     val = reader.ReadToEnd();                     Head.AbsoluteUri = Response.ResponseUri.AbsoluteUri;                     reader.Close();                     dataStream.Close();                     Response.Close();                     Head.Html = val;                 }             }             catch {                 return "未知错误";             }             return val;         }     } }

这个类中最关键的是那个关联cookie,这里不详细说明,具体看代码,如果有不明白的地方,请提出来。

        //开始提交联通卡密,这就是那个按钮对应的事件         private void BtnOk_Click(object sender, EventArgs e) {             String strTel = tbTel.Text.Trim();             String strPass = tbPass.Text.Trim();             String Result = UnionCardPay(strTel, strPass);             lblMsg.Text = BuilderErrMsg(Result);  //显示充值信息         }

 

   //重填输入框,重置按钮事件         private void BtnReset_Click(object sender, EventArgs e) {             tbTel.Text = tbPass.Text = String.Empty;         }

 

  //字符串中获取指定开始和结束的子串         private String GetValue(string str, string s, string e) {             Regex regex = new Regex("(?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3