博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 登陆淘宝 (非webbrowser)
阅读量:5914 次
发布时间:2019-06-19

本文共 2843 字,大约阅读时间需要 9 分钟。

HttpWebRequest 代码:

/// <summary>
/// 通过POST方式发送数据
/// </summary>
/// <param name="Url">url</param>
/// <param name="postDataStr">Post数据</param>
/// <param name="cookie">Cookie容器</param>
/// <returns></returns>
publicstaticstringSendDataByPost(stringUrl,Encoding encoding,string postDataStr,refCookieContainer cookie,refstringAbsoluteUri)
{


string retString ="";
try
{

HttpWebRequest request =(HttpWebRequest)WebRequest.Create(Url);
request.Timeout=40000;
if(cookie.Count==0)
{

request.CookieContainer=newCookieContainer();
cookie = request.CookieContainer;
}
else
{

request.CookieContainer= cookie;
}

request.Method="POST";
request.ContentType="application/x-www-form-urlencoded";
//request.ContentLength = postDataStr.Length;
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter =newStreamWriter(myRequestStream, encoding);
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();

HttpWebResponse response =(HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader =newStreamReader(myResponseStream, encoding);
retString = myStreamReader.ReadToEnd();
AbsoluteUri= response.ResponseUri.AbsoluteUri;
myStreamReader.Close();
myResponseStream.Close();
}
catch(Exception ex)
{

thrownewException(ex.Message, ex);
}
return retString;
}

下面是登陆代码:

/// <summary>
/// 淘宝登陆
/// </summary>
/// <param name="Account"></param>
/// <param name="Password"></param>
/// <returns></returns>
privateboolLoginTaobao(stringAccount,stringPassword)
{


stringAbsoluteUri=string.Empty;
string result =WebHelper.SendDataByPost("http://login.taobao.com/member/login.jhtml",Encoding.GetEncoding("gb2312"),"TPL_username="+Utility.UrlEncode(Account)+
"&TPL_password="+Utility.UrlEncode(Password)+"&actionForStable=enable_post_user_action&action=Authenticator&event_submit_do_login=anything",ref cookieContainer,refAbsoluteUri);

if(Regex.IsMatch(result,"safe/check_ip.do"))
{

Platform.Common.StatusOutputEvent(newobject(),newPlatform.Common.StatusArgs(){
Message="请在淘宝页面 [账号管理] 页面关闭 [登录保护] 功能或设置不进行二次验证地域."});
returnfalse;
}

if(result.IndexOf(aq_0)==-1&& result.IndexOf(aq_1)==-1)
{

returntrue;
}
else
{

Platform.Common.StatusOutputEvent(newobject(),newPlatform.Common.StatusArgs(){
Message="["+this.Name+"] 登录失败."});
returnfalse;
}
}

cookieContainer  为  
CookieContainer 类型,创建一个本类通用的对象,他将保存着你的登陆状态,登陆成功后进行其他任意操作只要提供
cookieContainer 对象即可。
 
Regex.IsMatch(result, "safe/check_ip.do") 为 true 的话,说明淘宝登陆设置中开启了 二次登陆验证,需要在淘宝设置中关闭才能登陆。
 
        private string aq_0 = "您需要安装安全控件,才可使用安全登录。";
        private string aq_1 = "您还未安装密码安全控件,安装后即可输入密码。";
 
if (result.IndexOf(aq_0) == -1 && result.IndexOf(aq_1) == -1)
 
返回的 HTML 代码中包含 以上两句话说明登陆失败,一般情况下需要淘宝用户手动登陆一下淘宝,然后再使用以上代码自动登陆就可以正常登陆了。
 
不要每次操作都登陆一下,要缓存好 cookies ,一段时间内登录次数太多淘宝会要求输入验证码,淘宝登陆验证码自动识别难度太大。

转载于:https://www.cnblogs.com/zcm123/archive/2013/05/02/3054748.html

你可能感兴趣的文章
[译]使用 Siesta 处理 Swift 网络请求
查看>>
Android 中的子线程解析
查看>>
aidl跨进程通讯
查看>>
小程序上传图片到七牛云(支持多张上传,预览,删除)
查看>>
spring boot 整合mybatis 无法输出sql的问题
查看>>
为什么要用IPython/Jupyter?
查看>>
数据可视化之 Sankey 桑基图的实现
查看>>
项目实战-Api的解决方案
查看>>
前端面试题总结
查看>>
(三)从jvm层面了解线程的启动和停止
查看>>
SOA和微服务之间的区别
查看>>
IBM提出8位深度网络训练法,提速4倍同时保持高精度
查看>>
苹果发布Core ML 2
查看>>
“智能云”战略新品震撼发布,开发者如何快速上手?
查看>>
华为吴晟:分布式监控系统的设计与实现
查看>>
[deviceone开发]-do_Webview的基本示例
查看>>
亚马逊Alexa借助神经网络生成播音员声音
查看>>
比特大陆新一轮裁员50%,回应称系人员调整
查看>>
将 Measurements 和 Units 应用到物理学
查看>>
如何确定所运行的 SQL Server 2005 的版本?
查看>>