HttpHelper 请从网络中搜索;

public partial class LoginTMall : Form

{

public LoginTMall()

{

InitializeComponent();

}

private void btnLogin_Click(object sender, EventArgs e)

{

string postDate = getPostString();

HttpItem itemLogin = new HttpItem()

{

URL = "https://login.taobao.com/member/login.jhtml",

Method = "POST",

ContentType = "application/x-www-form-urlencoded",

Referer = "https://www.taobao.com/",

Postdata = postDate,

Cookie = CommonDB.tmailModel.cookie,

};

HttpHelper helperLogin = new HttpHelper();

HttpResult resultLogin = helperLogin.GetHtml(itemLogin);

CommonDB.tmailModel.cookie = resultLogin.Cookie;

string html = resultLogin.Html;

if (html.ToLower().Contains("gotoURL:\"http://www.tmall.com/\"".ToLower()) && html.ToLower().Contains("gotoTop:true".ToLower()))             {

MessageBox.Show("登录成功!");

}

else

{

string namePwdNotMatch = "您输入的密码和账户名不匹配,请重新输入。";

string reInputcheckcode = "验证码错误,请重新输入";

string checkCodeNeedInput = "为了您的账户安全,请输入验证码。";

if (html.Contains(namePwdNotMatch))

{

MessageBox.Show(namePwdNotMatch);

return;

}

if (html.Contains(checkCodeNeedInput) || html.Contains(reInputcheckcode))

{

string checkCodeUrl = "<img id=\"J_StandardCode_m\" src=\"https://s.tbcdn.cn/apps/login/static/img/blank.gif\"";

int index = html.IndexOf(checkCodeUrl);

html = html.Substring(index, html.Length - index);

string datasrc = "data-src=\"";

index = html.IndexOf(datasrc);

html = html.Substring(index, html.Length - index);

html = html.TrimStart(datasrc.ToCharArray());

index = html.IndexOf("\"");

html = html.Substring(0, index);

setCheckCode(html);

MessageBox.Show(checkCodeNeedInput);

return;

}

}

}

private void setCheckCode(string url)

{

try

{

picBox.Image = Image.FromStream(System.Net.WebRequest.Create(url).GetResponse().GetResponseStream());

}             catch (Exception ex)             {                 Text = ex.Message;             }         }

private void LoginTMall_Load(object sender, EventArgs e)         {         }

private string getPostString()

{

PostParaPair model = new PostParaPair();

string checkCode = txtCheckCode.Text.Trim();

if (checkCode.Length != 0)

{

model.Add(new PostParaPair()

{ Key = "TPL_checkcode", Value = checkCode });

}

string pwd = txtPwd.Text.Trim();

if (pwd.Length != 0)

{

model.Add(new PostParaPair() { Key = "TPL_password", Value = pwd });             }

string name = txtUName.Text.Trim();

if (name.Length != 0)

{

model.Add(new PostParaPair() { Key = "TPL_username", Value = name });

}

model.Add(new PostParaPair() { Key = "allp", Value = "assets_css=2.0.0/login_pc.css&enup_css=2.0.0/enup_pc.css&assets_js=2.3.8/login_performance.js" });

model.Add(new PostParaPair() { Key = "CtrlVersion", Value = "1,0,0,7" });             model.Add(new PostParaPair() { Key = "fc", Value = "default" });

model.Add(new PostParaPair() { Key = "from", Value = "tmall" });

model.Add(new PostParaPair() { Key = "full_redirect", Value = "true" });

model.Add(new PostParaPair() { Key = "loginASR", Value = "0" });

model.Add(new PostParaPair() { Key = "loginASRSuc", Value = "0" });

model.Add(new PostParaPair() { Key = "loginsite", Value = "0" });

model.Add(new PostParaPair() { Key = "loginType", Value = "3" });

model.Add(new PostParaPair() { Key = "naviVer", Value = "ie|9" });

model.Add(new PostParaPair() { Key = "newlogin", Value = "0" });

model.Add(new PostParaPair() { Key = "osVer", Value = "windows|6.1" });

model.Add(new PostParaPair() { Key = "poy", Value = "XOR_1_000000000000000000000000000000_65585B56440B6279736B017E6F0065" });             model.Add(new PostParaPair() { Key = "pstrong", Value = "2" });

model.Add(new PostParaPair() { Key = "sr", Value = "1366*768" });

model.Add(new PostParaPair() { Key = "style", Value = "miniall" });

model.Add(new PostParaPair() { Key = "sub", Value = "false" });

model.Add(new PostParaPair() { Key = "support", Value = "000001" });

model.Add(new PostParaPair() { Key = "tid", Value = "XOR_1_000000000000000000000000000000_602B4C5345787C007D7D057F" });             model.Add(new PostParaPair() { Key = "TPL_redirect_url", Value = "http://www.tmall.com/" });

model.Add(new PostParaPair() { Key = "ua", Value = "128JqNYCOQNFccufusYO71CC4hyOrlKBYpjQqg=|JaNECYpwPbpBBIV6MrRKA+k=|JKFGYfR2T4A7K/NKU5Z/L7pIFo1kT5E0LPRIR9JEZQ==|I6VcDJljK61XG5xuJKdYFZdpL6hNAYJwOL5FAIR9NLRLA4F5NbRdfA==|IqRWBuoQQMI5ceoQXMcuMb0UGshidflPWs9ZeA==|Ia5JF4IU|IK5JF4IU|L6lTA+8GEtFuYqZXBJw7KPhaSNFuc6sCH8ciPeVDEMpkdaAOAJg/LPxeTNV0YKMFFYBnOaw6Gw==|LqpNau8UXMc7d/gfUNUufvoJRt0naOkURMQ5feYcU9Ivf/8GQqg+|LatTA+8GLfNWTpYqJbJOEItiSbcybugXR8Ana/AKQsApCOI=|LKpRAZQETMwydvIVNaBaEpRuIqVZFJRqJqdeXtk8d/YMQM4ze/8FTMw2f/sATqVMHJoMUrg=|K6tMa/4XR8Anbu4RVL4o|KqhPaP1iTrUhLftDTIwoJvVhLLleef8CR9wmb+t9LapNE4ZhL61eEZQCIw==|KalOafxjT7QgLPpCTY0pJ/RgLbhfEolwObZOC+F3|KKhPaP1iTrUhLftDTIwoJvVhLLleEolwNbVNAet9|N7dQd+J9Uao+MuRcU5M3Oep+M6ZBDZZvKqpSF/1r|NrZRduNiQaUPFcdpca8QXd4kae4VUNEuYe4WWcwrZv0EQcE+dpwK|NbdQd+ILW7dNCJNpLK07a+wLVcAnaO4VUNNFZA==|NLRTdOFgQ6cNF8Vrc60SX9wma+wXUtMsY+wUW84pZf4GS8w+dZ8J|M7NUc+ZnRL8bAN57RZ0ucOsRQcU/cvUOL8U=|MrBXcOVkR7MXD91fTYo0PNR2KLMjbO4JRMo0FY51JbBZCY13PrtIaYM=|MbFWceRlRr0ZAtx5R58scukSQsY8dfECI8k=|MLBXcOVkR7MXD91fTYo0PNR2KLNJGZ1nLq1VdJ4=|P71afegBUb1CDJdtKK44aO8IVsMka+0RVNJEZQ==|Pr5ZfutqSb0ZAdNRQ4Q6Mtp4Jr1GFpJoI61ffpQ=|Pb1afegBUdcwf/kKRsVTcg==|PLxbfOkAUNcwf/kLR8BWdw==|O7tce+5vTLgcBNZURoE/N999I7hCEpZsKa5Wd50=|OrleeewFVdAia/AKTs8oZ+IaUN5IaQ==|Obtce+5vTKgXCtN8YaQLNOxDWs8oD4p0MKtRGpp9M7BMHJpmKbJKAJtiJswrZ/wVAcRqcPoUWt43Z+MaXtkqC+E=|OLhfeO1sT7sfB9VXRYI8NNx+ILtAEJRtKa9Tcpg=|B4dgR9JTcJQrNu9AXZg3CNB/ZvMUWcI6dPsCTacx|BoZhRtNScZUqN+5BXJk2CdF+Z/IVWcI6dPsHQ6k/|BYViRdBRcoYiOuhqeL8BCeFDHYZ8LKhRFZpgQas=|BIZhRtNScZUqN+5BXJk2CdF+Z/IVMrdKApljKKhPAYJ+LqhUG4B4MqlQFP4ZVc4nM/ZYQsgmaOwFVdEuYucfPtQ=|A4NkQ9ZXdIAkPO5sfrkHD+dFG4B7K69QHJhgQas=|AoJlQtdWdZEuM+pFWJ0yDdV6Y/YRXMc/d/APQ6k/|AYFmQdRVdpItMOlGW54xDtZ5YPUSXsU9dfMIRa85|AIBnQNVUd4MnP+1vfboEDORGGIN5Ka1SH5hlRK4=|D41qTdgxYY1wO6BaHpwKWt06ZPEWWdgha+54WQ==|Do5pTttaeY0pMeNhc7QKAupIFo12JqJfEZFuT6U=|DY1qTdgxYecAT843c/BmRw==|DIxrTNkwYOcAT842f/5oSQ==|C4tsS95ffIgsNOZkdrEPB+9NE4hyIqZbFJVuT6U=|CotsS95ffIgsNOZkdrEPB+9NE4h1MapRAYV4PbNKa4E=|CYhvSN1cf4svN+VndbIMBOxOEItxO6BbC49zPb1BYIo=|CIluSdxdfoouNuRmdLMNBe1PEYp2OKNcDIh0O7tHZow=|F5ZxVsNCYZUxKft5a6wSGvJQDpVrJ7xHF5NgK6hSc5k=|FpdwV8JDYJQwKPp4aq0TG/NRD5RuJL9EFJBiL6tSc5k=|FZRzVMFAY5czK/l7aa4QGPBSDJdrIrlGFpJgLqxef5U=|FJRzVMFAY5czK/l7aa4QGPBSDJdsPL9FCItyU7k=|E5F2UcRFZoI8IvhaUrYJFNd1av8YP7pBCJNqIq07a+wLVcAnb+wWX9FHZg==|EpJ1UsdGZYE/IftZUbUKF9R2afwbVs0yevwATqQy|EZJpJb5FFZB3OrlDE5dpIrlHApllLLdNAINkKbJIAoViJ6BHCIdgLalOAYBnKKpNAoFmKa1KDpVtILtDD5RqOr9MHJllNbBXGZt8MrFWGJx7NbBXBoB5KbNMHJpoOL5NHZtnN7FMHIZ0JKJdDYtzI6VcDIpwILpACJNhMb5ZEol0JL5NHYd1Jb9FCZJ0Ob9YCY92JrxGCZJ0OaJECotsPbkv" });             model.Add(new PostParaPair() { Key = "umto", Value = "T7a1f5ec30a29c6b7e223b6872fb8637a" });

return model.ToString();         }     }

PostParaPair类的定义
public class PostParaPair
{
    List<PostParaPair> paraList = new List<PostParaPair>();
    public string Key { get; set; }
    public string Value { get; set; }
    public void Add(PostParaPair para)
    {
        paraList.Add(para);
    }
    public override string ToString()
    {
        string reString = "";
        if (paraList.Count != 0)
        {
            foreach (PostParaPair item in paraList)
            {
                reString += string.Format("&{0}={1}", item.Key, CommonMethod.GetUrlEncode(item.Value));
            }
        }
        return reString.TrimStart('&');
    }
}

CommonMethod.GetUrlEncode的定义:

public static string GetUrlEncode(string content)
    {
        return System.Web.HttpUtility.UrlEncode(content, System.Text.Encoding.UTF8);
    }

天猫登录源码 POST C#的更多相关文章

  1. Yii2 使用 QQ 和 Weibo 第三方登录源码

    我们社区在 yii2-authclient 多次升级后,登录异常.一直想寻求一种通用的方法,尽量不重写 OAuth2, BaseOAuth 以及 OAuthToken 类, 所以本次直接在 initU ...

  2. Saiku登录源码追踪.(十三)

    Saiku登录源码追踪呀~ >>首先我们需要debug跟踪saiku登录执行的源码信息 saiku源码的debug方式上一篇博客已有说明,这里简单介绍一下 在saiku启动脚本中添加如下命 ...

  3. CAS Server集成QQ登录、新浪微博登录源码及配置文件

    转载自素文宅博客:https://blog.yoodb.com/yoodb/article/detail/1446 CAS Server集成QQ第三方登录,CAS Server集成新浪微博第三方登录以 ...

  4. 类似818tu.co微信小说分销系统设计之多公众号网页授权自动登录源码

    /** 转载请保留原地址以及版权声明,请勿恶意修改 *  作者:杨浩瑞  QQ:1420213383  独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...

  5. CAS单点登录源码解析之【客户端】

    cas 3.5.3服务器搭建+spring boot集成+shiro模拟登录(不修改现有shiro认证架构).因为我们属于供应商,所以有些客户那里会需要接对方的CAS,所以没有使用shiro和cas的 ...

  6. 类似818tu.c微信小说分销系统设计之多公众号网页授权自动登录源码分享

    /** 转载请保留原地址以及版权声明,请勿恶意修改 *  作者:杨浩瑞  QQ:1420213383  独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...

  7. shiro登录源码

    //1.获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager Factory<org.apache.shiro.mgt.SecurityManage ...

  8. spring security 之自定义表单登录源码跟踪

    ​ 上一节我们跟踪了security的默认登录页的源码,可以参考这里:https://www.cnblogs.com/process-h/p/15522267.html 这节我们来看看如何自定义单表认 ...

  9. 密码登录源码(jsp+java+数据库)

    jsp界面: <%@ page language="java" contentType="text/html; charset=utf-8" pageEn ...

随机推荐

  1. cf723b Text Document Analysis

    Modern text editors usually show some information regarding the document being edited. For example, ...

  2. PHP中如何在数组中随机抽取n个数据的值 - array_rand()?

    PHP中如何在数组中随机抽取n个数据的值? 最佳答案 array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用.它接受 input 作为输入数组和一个可选的参数 num_req,指明 ...

  3. 第2月第1天 GCDAsyncSocket dispatch_source_set_event_handler

    一.GCDAsyncSocket的核心就是dispatch_source_set_event_handler 1.accpet回调 accept4Source = dispatch_source_cr ...

  4. js前端实现模糊查询

    对于模糊查询,一般都是传关键字给后端,由后端来做.但是有时候一些轻量级的列表前端来做可以减少ajax请求,在一定程度上提高用户体验.废话不多说,直接上代码. //字符串方法indexOfvar len ...

  5. JDK source 之 LinkedHashMap原理浅谈

    注:本文参考JDK1.7.0_45源码. LinkedHashMap是基于HashMap实现的数据结构,与HashMap主要的不同为每个Entry是使用双向链表实现的,并且提供了根据访问顺序进行排序的 ...

  6. input(file)样式修改及上传文件名显示

    实现思路: a标签包裹input元素 设置a标签为上传按钮的样式,相对定位 设置input为透明,绝对定位,覆盖到a上面 效果:看到的按钮是a的样式,点击时实际是点击input元素.样式和功能都具备 ...

  7. dp 走格子问题

    问题: 一个5x8的格子,想从左下角走到右上角,求最短路径,共有多少种走法. 思路: 因为是求最短路径,所以,只会往右往上走. 我们可以把棋盘的左下角看做二维坐标的原点(0,0),把棋盘的右上角看做二 ...

  8. Sql Server 2008服务启动失败,错误17058

    SQL Server (SQLEXPRESS) 服务因 17058 (0x42A2) 服务性错误而停止. 有关更多信息,请参阅在 http://go.microsoft.com/fwlink/even ...

  9. Java笔记:对象,方法,类

    1.数据类型(类) 对象名; 这里要求数据类型必须为复合数据类型,基本数据类型声明的结构只能称为变量,而不能称为对象. 对象的初始化 对象名= new 构造方法(参数); 2.方法: 访问控制符 [修 ...

  10. ajax实例2

    前台: function save() { var username = document.getElementById("username").value; var id = d ...