700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 模拟京东商城登陆HttpRequest

模拟京东商城登陆HttpRequest

时间:2023-11-14 14:04:28

相关推荐

模拟京东商城登陆HttpRequest

利用Winform HttpRequest 模拟登陆京东商城

目前只获取订单信息,可以获取图片等其他信息

1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using ; 6 using System.Text; 7 8 namespace HelperLib 9 { 10public enum ResponeType 11{ 12 String, 13 File 14} 15/// <summary> 16/// HttpRequest Help 17/// Code By:lvxiaojia 18/// blog:/lvxiaojia/ 19/// </summary> 20public class RequestHelp 21{ 22 static CookieContainer cookie = new CookieContainer(); 23 public static string Post(string url, Dictionary<string, string> postData, string referer = "", string accept = "", string contentType = "", ResponeType type = ResponeType.String, string fileSavePath = "", Action<string> action = null, Func<Dictionary<string, string>> fun = null) 24 { 25 var result = ""; 26 //var cookie = new CookieContainer(); 27 StringBuilder strPostData = new StringBuilder(); 28 if (postData != null) 29 { 30 postData.AsQueryable().ToList().ForEach(a => 31 { 32 strPostData.AppendFormat("{0}={1}&", a.Key, a.Value); 33 }); 34 } 35 byte[] byteArray = Encoding.UTF8.GetBytes(strPostData.ToString().TrimEnd('&')); 36 37 HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); 38 39 webRequest.CookieContainer = cookie; 40 41 webRequest.Method = "POST"; 42 if (string.IsNullOrEmpty(accept)) 43 webRequest.Accept = "application/json, text/javascript, */*;"; 44 else 45 webRequest.Accept = accept; 46 47 if (!string.IsNullOrEmpty(referer)) 48 webRequest.Referer = referer; 49 if (string.IsNullOrEmpty(contentType)) 50 webRequest.ContentType = "application/x-www-form-urlencoded"; 51 else 52 webRequest.ContentType = contentType; 53 54 if (strPostData.Length > 0) 55 webRequest.ContentLength = byteArray.Length; 56 57 //请求 58 Stream newStream = webRequest.GetRequestStream(); 59 newStream.Write(byteArray, 0, byteArray.Length); 60 newStream.Close(); 61 62 HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); 63 var responSteam = response.GetResponseStream(); 64 65 if (type == ResponeType.String) 66 { 67 StreamReader strRespon = new StreamReader(responSteam, Encoding.UTF8); 68 result = strRespon.ReadToEnd(); 69 } 70 else 71 { 72 BinaryReader br = new BinaryReader(responSteam); 73 byte[] byteArr = br.ReadBytes(200000); 74 FileStream fs = new FileStream(fileSavePath, FileMode.OpenOrCreate); 75 fs.Write(byteArr, 0, byteArr.Length); 76 fs.Dispose(); 77 fs.Close(); 78 result = "OK"; 79 } 80 if (action != null) 81 { 82 action.Invoke(result); 83 } 84 if (fun != null) 85 { 86 Dictionary<string, string> dic = new Dictionary<string, string>(); 87 foreach (var item in cookie.GetCookies(webRequest.RequestUri)) 88 { 89 var c = item as Cookie; 90 dic.Add(c.Name, c.Value); 91 } 92 fun = () => { return dic; }; 93 } 94 return result; 95 96 } 97 98 99 public static string Get(string url, Dictionary<string, string> postData=null, string referer = "", Action<string> action = null, Action<Dictionary<string, string>> fun = null)100 {101 var result = "";102 103 StringBuilder strPostData = new StringBuilder("?");104 if (postData != null)105 {106 postData.AsQueryable().ToList().ForEach(a =>107 {108 strPostData.AppendFormat("{0}={1}&", a.Key, a.Value);109 });110 }111 if (strPostData.Length == 1)112 strPostData = strPostData.Clear();113 HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url + strPostData.ToString().TrimEnd('&'));114 webRequest.CookieContainer = cookie;115 webRequest.Method = "GET";116 webRequest.Accept = "text/javascript, text/html, application/xml, text/xml, */*;";117 if (!string.IsNullOrEmpty(referer))118 webRequest.Referer = referer;119 //请求120 HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();121 var responSteam = response.GetResponseStream();122 123 StreamReader strRespon = new StreamReader(responSteam, Encoding.Default);124 result = strRespon.ReadToEnd();125 126 if (action != null)127 {128 action.Invoke(result);129 }130 if (fun != null)131 {132 Dictionary<string, string> dic = new Dictionary<string, string>();133 foreach (var item in cookie.GetCookies(webRequest.RequestUri))134 {135 var c = item as Cookie;136 dic.Add(c.Name, c.Value);137 }138 fun.Invoke(dic);139 }140 return result;141 142 }143 144}145 }

RequestHelp

1 using System; 2 using System.Collections.Generic; 3 using ponentModel; 4 using System.Linq; 5 using System.Reflection; 6 using System.Security.Cryptography; 7 using System.Text; 8 9 namespace HelperLib10 {11/// <summary>12/// 13/// </summary>14public class EncodingHelp15{16 public static string GetMd5Str32(string str)17 {18 MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();19 char[] temp = str.ToCharArray();20 byte[] buf = new byte[temp.Length];21 for (int i = 0; i < temp.Length; i++)22 {23 buf[i] = (byte)temp[i];24 }25 byte[] data = puteHash(buf);26 StringBuilder sBuilder = new StringBuilder();27 for (int i = 0; i < data.Length; i++)28 {29 sBuilder.Append(data[i].ToString("x2"));30 }31 return sBuilder.ToString();32 }33 34 public static string GetEnumDescription(Enum value)35 {36 Type enumType = value.GetType();37 string name = Enum.GetName(enumType, value);38 if (name != null)39 {40 // 获取枚举字段。41 FieldInfo fieldInfo = enumType.GetField(name);42 if (fieldInfo != null)43 {44 // 获取描述的属性。45 DescriptionAttribute attr = Attribute.GetCustomAttribute(fieldInfo,46typeof(DescriptionAttribute), false) as DescriptionAttribute;47 if (attr != null)48 {49return attr.Description;50 }51 }52 }53 return null;54 }55}56 }

EncodingHelp

1 using System; 2 using System.Collections.Generic; 3 using ponentModel; 4 using System.Data; 5 using System.Diagnostics; 6 using System.Drawing; 7 using System.IO; 8 using System.Linq; 9 using ; 10 using System.Text; 11 using System.Text.RegularExpressions; 12 using System.Web; 13 using System.Windows.Forms; 14 using HelperLib; 15 16 namespace SimulationSouGouLogion 17 { 18public partial class LoginJD : Form 19{ 20 public LoginJD() 21 { 22 InitializeComponent(); 23 } 24 25 static string loginUrl = "/new/login.aspx"; 26 static string loginServiceUrl = "/uc/loginService"; 27 static string loginRefererUrl = "/uc/login?ltype=logout"; 28 29 private void button1_Click(object sender, EventArgs e) 30 { 31 richTextBox1.Text = ""; 32 33 RequestHelp.Get(loginUrl, null); 34 35 var login = RequestHelp.Post(loginServiceUrl, 36 new Dictionary<string, string>(){ 37 {"uuid","59c439c8-09de-4cce-8293-7a296b0c0dd1"}, 38 {"loginname",HttpUtility.UrlEncode(tbUserCode.Text)}, 39 {"nloginpwd",HttpUtility.UrlEncode(tbPassword.Text)}, 40 {"loginpwd",HttpUtility.UrlEncode(tbPassword.Text)}, 41 {"machineNet","machineCpu"}, 42 {"machineDisk",""}, 43 {"authcode",""}}, loginRefererUrl); 44 45 if (!login.Contains("success")) 46 { 47 if (login.ToLower().Contains("pwd")) 48 { 49 MessageBox.Show("密码验证不通过!", "提示"); 50 tbPassword.Text = ""; 51 tbPassword.Focus(); 52 return; 53 } 54 else 55 { 56 MessageBox.Show("登陆失败!", "提示"); return; 57 } 58 } 59 60 61 var dic = new Dictionary<string, string>(); 62 //获取订单列表 63 var orderList = RequestHelp.Get("/center/list.action?r=635133982534597500", null, fun: a => dic = a); 64 65 //分析网页HTML 66 var regexOrder = Repex(@"<tr id=.{1}track\d+.{1} oty=.{1}\d{1,3}.{1}>.*?</tr>?", orderList); 67 68 //获取每个订单信息 69 regexOrder.ForEach(a => 70 { 71 var orderCode = Repex(@"<a name=.{1}orderIdLinks.{1} .*? href=.{1}(.*)'?.{1}>(.*)?</a>?", a); 72 var order = Match(@"<a name='orderIdLinks' .*? href='(.*)?' clstag=.*>(.*)</a>", orderCode[0]); 73 richTextBox1.Text += "订单号:" + order[1] + "\r\n"; 74 richTextBox1.Text += "订单详情地址:" + order[0] + "\r\n"; 75 }); 76 77 //获取订单信息 78 //var details = RequestHelp.Get("/jdhome/CancelOrderInfo.aspx?orderid=502561335&PassKey=28C8E5A477E7B255A72A7A67841D5D13"); 79 } 80 81 List<string> Repex(string parm, string str) 82 { 83 List<string> list = new List<string>(); 84 var regex = new Regex(parm, RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.IgnoreCase); 85 var math = regex.Matches(str); 86 if (math.Count < 0) return list; 87 88 foreach (var item in math) 89 { 90 var strdetails = (item as Match).Value; 91 92 list.Add(strdetails); 93 } 94 95 return list; 96 97 } 98 List<string> Match(string parm, string str) 99 {100 List<string> list = new List<string>();101 var math = Regex.Matches(str, parm);102 if (math.Count < 0) return list;103 list.Add(math[0].Result("$1"));104 list.Add(math[0].Result("$2"));105 return list;106 107 }108 109 private void Form1_Load(object sender, EventArgs e)110 {111 tbPassword.Focus();112 }113 114 private void blogLink_Click(object sender, EventArgs e)115 {116 Process.Start("/lvxiaojia/");117 }118 119}120 }

窗体后台代码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。