搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
不正经
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Unity 3D动态修改Shader状态,使物体透明等等_untiy 代码设置shader,并解决在手机上透明效果不对的问题
2
鸿蒙系统起飞!Flutter 完全适配指南_flutter 鸿蒙
3
[小米电视][原创]小米电视播放mkv没声音解决办法
4
【初始RabbitMQ】死信队列的实现
5
Python -- 利用pygame库进行游戏开发基础_python pygame库
6
C语言实现中文BGK、UNICODE、UTF8之间的编码转换_c语言汉字编码转换
7
【OpenCV进阶】opencv4.1_contrib扩展模块安装与使用_opencv_contrib
8
unity3dSocket通信中使用Protobuf_unity socket protobuf处理数据
9
机器学习周刊03:如何学习深度学习?2024 年学习生成式 AI 路线图、如何构建高效的RAG系统、苹果 腾讯最新论文、阿里DreaMoving_rag学习路径
10
AI Mass人工智能大模型即服务时代:AI Mass在图像识别中的应用案例_ai大模型智能图像识别技术
当前位置:
article
> 正文
HttpHelper类登录淘宝联盟并下载淘宝客订单xls_淘宝联盟怎么下载订单数据
作者:不正经 | 2024-02-28 14:36:22
赞
踩
淘宝联盟怎么下载订单数据
利用飞哥的HttpHelper 1.3版本(因为我用VS2005开发,1.3报错少)实现模拟登录淘宝联盟并且下载淘宝客订单xls文件。现提供源码下载,有不明白的可以问我,同时如果您有好的修改建议请回复。我是第一次开发Http程序,请多包涵。
本次开发环境与工具如下:
IE9.0浏览器 + IE抓包插件HttpWatch +WIN7 64位系统 + VS2005 IDE + .NET 2.0框架
本想上传HttpWatch抓包插件,但由于文件超过9.6M的限制,无法提供了。请各位到google上面搜索下吧
测试时注意事项:
必须取消淘宝帐号登录保护
http://110.taobao.com/protect/protect_web.htm
做这个程序关键是分析数据,只有数据分析出来了,才能动手写代码,当然您如果对HttpHelper类不熟悉的话,请参考飞哥相关的文章。
我看到好多人发文章都是直接发代码,我感觉没什么用,因为拿到代码后还要调试并且要揣摩代码的调用究竟有何用意,对于初学者(比如我)来说真的没有信心把它的代码看完,因为即使知道每句代码的含义,但却完全不知道他为什么要这么做,这么做的目的何在。所以授人以鱼,不如授人以渔。我的目的是要教会大家从如何分析数据开始直到把分析的结果写成代码。
下面来几张截图说明分析数据步骤:
第一步:在淘宝联盟
www.alimama.com
上面使用淘宝账号登录,输入账号密码点击登录后,截到如下数据,
(技巧:登录网站即POST数据,重点找POST方式,以及哪个网址中包含login字样,以及请求/回复流中是否包含有价值的信息,如:账号、密码或登录成功的提示信息等)
(思路:使用上面的技巧分析,发现有2个POST其中有个POST的网址包含login字样,并且请求流中包含用户名和密码,回复流中包含登录成功与否的提示,所以他就是我们要找的登录数据。)
现在我们知道了要POST的URL,即"
https://login.taobao.com/member/login.jhtml
",以及要POST的数据,还有服务器将会回复的内容,那么请看如下代码:
private void Login()
{
HttpItem item = new HttpItem();
item.URL =
https://login.taobao.com/member/login.jhtml
;
item.Method = "post";
item.Postdata = string.Format("ua=056u5Ob……&TPL_username={0}&TPL_password={1}&...……", HttpUtility.UrlEncode(txtLoginId.Text.Trim()), HttpUtility.UrlEncode(txtPwd.Text.Trim()));
item.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
item.Allowautoredirect = true;
HttpResult result = m_Http.GetHtml(item);
string html = result.Html;//服务器回复的内容,它是json格式,包括message,token等字段,message为空为登录成功,否则不为空
string cookie = result.Cookie;//保存cookie便于后面还要使用
Match m = Regex.Match(html, "(?<=,\"message\":\").*?(?=\",)");
if (string.IsNullOrEmpty(m.Value)) //登录成功账号密码正确的情况下
{
Match token = Regex.Match(html, "(?<=\"token\":\").*?(?=\")");//捕获token的值,后面提交的网址中将要使用它
if (!string.IsNullOrEmpty(token.Value))
{
……
}
}
}
如上代码所示,当访问请求提交后,服务器返回的json内容在变量html里面,其中message字段表示是否有错误,如:账号密码不正确,如果账号密码正确message字段值将为"",所以我们利用正则表达式捕获message的值用于判断账号密码是否正确。
(思路:我们发现回复的json里面除了message字段之外,还有个token字段,它有什么作用呢?先不着急,我们看看接下来的数据包里面有哪个地方包含了这个token数据。找到了!他就是接下来请求的网址)
另外token字段我们也要获取下来,因为下一个访问的网址要用到它。
第二步:根据捕获的token值拼装网址并继续访问,如下图
从上面得到的token值,经过拼装字符串得到下次访问的URL,即
"
https://passport.alipay.com/mini_apply_st.js?site=0&token={0}&callback=vstCallback62
"。
(思路:既然上次访问的结果有价值,那么这次服务器返回的结果是否也有价值呢?我们看下结果,这次访问后服务器会返回一段js代码,其中包含一个"st"的值(看上图的红色框部分),我们发现下次请求的网址中真的用到了这个st哦!好兴奋)
同样,这次我们也像上次一样用正则表达式捕获"st”的值并且保存,因为后面要使用到它。
(小结:其实我一直在做一件事情,即:把这次访问的结果作为参数拼装一下将得到下次要访问的网址)
private void Login(){
……
Match token = Regex.Match(html, "(?<=\"token\":\").*?(?=\")");//获取token值
if (!string.IsNullOrEmpty(token.Value))
{
item = new HttpItem();
item.Method = "get";
item.URL = string.Format("
https://passport.alipay.com/mini_apply_st.js?site=0&token={0}&callback=vstCallback62
", token.Value);
item.Accept = "application/javascript, */*;q=0.8";
result = m_Http.GetHtml(item);
html = result.Html;
cookie += result.Cookie;
Match st = Regex.Match(html, "(?<=\"st\":\").*?(?=\")");//捕获st的值,后面还要使用它
……
}
}
第三步:根据捕获的st值,继续访问,如下图
通过将上面得到的st值再次拼装下网址得到URL即
https://login.taobao.com/member/vst.htm?st={0}&……TPL_username%3D{1}……&callback=jsonp75
,{0}处填写上一步的st,{1}处填写淘宝账号
(思路:这次返回的值是否有价值呢?我们看看下面的请求哪个网址中出现这个返回值。找到了!返回值url后面跟的就是下次要访问的网址,好神奇呀)
这次服务器同样会返回下一次要访问的网址,我们将他捕获出来它就是url字段(上图中红框标记),代码如下
private void Login(){
……
Match st = Regex.Match(html, "(?<=\"st\":\").*?(?=\")");
if (st.Success)
{
item.URL = string.Format("
https://login.taobao.com/member/vst.htm?st={0}&……TPL_username%3D{1}……&callback=jsonp75
", st.Value, txtLoginId.Text.Trim());
item.Cookie = cookie;
result = m_Http.GetHtml(item);
html = result.Html;
cookie += result.Cookie;
Match url = Regex.Match(html, "(?<=\"url\":\").*?(?=\")");
if (url.Success)
{
……
}
}
第四步:我们继续访问这个url,服务器将会进行重定向三次,每次重定向的网址从上次的结果HttpResult.Header[Location]属性中获取,再赋值给item.URL进行访问。如下图
代码如下
private void Login()
{
……
Match url = Regex.Match(html, "(?<=\"url\":\").*?(?=\")");
if (url.Success)
{
#region 这里HttpWatch中重定向三次
//阿里妈妈,阿里巴巴旗下网络营销平台
item.Method = "get";
item.Cookie = cookie;
item.URL = url.Value;//上次回复流中捕获的url
result = m_Http.GetHtml(item);//第1次重定向
cookie += result.Cookie;
item.URL = result.Header[HttpResponseHeader.Location];
item.Cookie = cookie;
result = m_Http.GetHtml(item);//第2次重定向
cookie += result.Cookie;
item.URL = result.Header[HttpResponseHeader.Location];
item.Cookie = cookie;
result = m_Http.GetHtml(item);//第3次重定向
cookie += result.Cookie;
#endregion
……
}
}
至此登录就完成了,接下来就是下载xls文件了。对于下载xls文件较简单,直接get方式提交网址,得到byte[]字节数组并利用FileStream类写到文件中。大家根据以上分析的思路学会分析才是最重要的,所以下载这部分就留给大家自已分析了。提示:下载观看我的源码+观察HttpWatch截获的数据2种方式相结合去分析,对于观察HttpWatch截获的数据主要观看他是POST还是GET方式,以及访问的地址和提交的COOKIE以及服务器返回的COOKIE,还有服务器的回复流这几个方面着手分析。
上面我在讲解的过程中分了4个步骤,是从第1步至第4步讲解的,其实我们在分析数据的时候应该首先从第4步开始一直回溯分析网址来源就得到了第1步。第4步中服务器发来的cookie才是最重要的,有了它才能访问淘宝联盟的首页(这个结论当然是通过几次试验得出的),但如果不进行第123步的话第4步的访问地址和cookie无法得出,所以第4步是分析数据的切入点,至关重要。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/不正经/article/detail/159541
推荐阅读
article
Redis
面试
题十道_
redis
面试
问题
...
Redis
面试
题十道_
redis
面试
问题
redis
面试
问题
问题
...
赞
踩
article
【
Python
】全网最详细
的
Python
入门
基础教程
(
非常详细
,
整理而来)...
标识符在
Python
中
,
所有标识符可以包括英文
(
区分大小写
的
)、数字以及下划线(_)
,
但不能以数字开头。以单下划线开...
赞
踩
article
t
c
p_
c
lient.
c
客户程序
服务模型...
#in
c
lude #in
c
lude #in
c
lude #in
c
lude #in
c
lude #in
c
lude #in
c
lu...
赞
踩
article
SpringBoot
整合
Jedis
详细步骤_
springboot
jedispool
...
一、在pom.xml文件中添加
Jedis
的依赖
[详细]
-->
赞
踩
article
滴滴
(夜莺)
Nightingale
监控
部署_
go
的
nighingale
...
Nightingale
是一套衍生自Open-Falcon
的
互联网
监控
解决方案,融入了
滴滴
的
最佳实践,由于改动太大,优化太...
赞
踩
article
使用
DataX
进行
数据
同步
_
datax
同步
数据
时源表
结构
变化
而
变化
...
DataX
是一个异构
数据
源离线
同步
工具,可以实现
数据
源之间的
数据
同步
。 ODPSWriter插件适合于TB,GB数量级...
赞
踩
article
Praat
脚本
-037 | 批量把
标注
TextGrid
生成韵律文本_将
textgird
转为txt
文件
...
这里我们想提示一下有这几个信息需要关注,第一是因为这里采用的是标贝公司的开源
标注
数据,这些数据的汉字层是有停顿边界的,即...
赞
踩
article
服务器Microsoft
windows
server
系统
安装
telnet
_
windows
serv...
windows
server
安装
telnet
_
windows
server
安装
telnet
windows
server
...
赞
踩
article
Pip
更换
默认
镜像
源
_
pip
源
...
我总结的这几种
更换
pip
源
的常用方式,希望可以帮助您成功配置国内
源
,解决安装Python包速度慢的问题。理解
pip
源
的重...
赞
踩
article
pandoc
实现
LaTeX
转
word
+
公式
格式
批量
转
换_
pandoc
转
word
...
此外,
pandoc
生成指定
格式
的参考文献需要使用执行器,网络上很多教程推荐使用 --filter
pandoc
-cit...
赞
踩
article
C语言 AF
_
UNIX
tcp
/
udp
socket
实例
_
udp
af
unix
...
========================
tcp
方式============================ud...
赞
踩
article
腾讯
开源跨端
框架
Hippy
3.0
在
腾讯
视频
的
升级
实践...
????导读
Hippy
是
腾讯
开源的跨端
框架
,在
腾讯
内部业务场景中有广泛应用。
腾讯
视频
搜索业务基于
Hippy
2.0 ...
赞
踩
article
SpringBoot
集成
Jedis
操作
Redis
缓存_
spring
cloud
整合
jedis
...
在使用
SpringBoot
构建SpringCloud微服务时,需要用到
Redis
做数据缓存,提高业务逻辑的处理。所以就不...
赞
踩
article
UE4
入门学习2:
工程
结构
分析
_
ue
工程
结构
...
本文的目的是详细分析上一节中建立的
工程
结构
,从宏观上认识
UE4
。
_
ue
工程
结构
ue
工程
结构
...
赞
踩
article
鹅厂
程序员
爆肝整理
,
万字长文讲透
MongoDB
中
的
锁
...
????导读
MongoDB
作为世界领先
的
文档型数据库广受开发者
的
喜爱
,
而
MongoDB
中
的
锁
又为数据库高并发
的
读写...
赞
踩
article
2023年云
原生
产业
大会
:
核心
内容与学习收获(附
大会
核心
PPT
下载)...
2023年云
原生
产业
大会
的主题为“新质转换 智能纪元”,主要围绕云
原生
前沿技术趋势、基于云
原生
技术的应用现代化建设、大模...
赞
踩
article
Python
中
的
多线程
实现详解...
在
Python
中,
多线程
是一种常用
的
并发编程技术,它允许在同一时间执行多个线程,从而充分利用CPU资源。然而,由于全局解...
赞
踩
article
【网络编程】
如何
检测无效
连接
?
keep
-
alive
?
心跳
?_
如何
判断
一个
链接失效...
虽然TCP没有提供系统的保活能力,让应用程序可以方便地感知
连接
的存活,但是,我们可以在应用程序里灵活地建立这种机制。一般...
赞
踩
article
二、
夜莺
监控
功能使用
V6.0
_
夜莺
监控
深
信服
...
夜莺
监控
的功能使用方法和配置方法!!!
_
夜莺
监控
深
信服
夜莺
监控
深
信服
...
赞
踩
article
mysql
session
缓存
_
MyBatis
的
缓存
机制:
一级
缓存
(
SqlSession
级别)...
在实际项目开发中,通常对数据库查询的性能要求很高,而
MyBatis
提供了查询
缓存
来
缓存
数据,从而达到提高查询性能的要求....
赞
踩
相关标签
redis
python
spark
hive
hadoop
tcp
server
struct
buffer
stream
socket
spring boot
jedis
linux
服务器
监控类
falcon
odps
阿里云
dataX
Praat
大数据
运维
开发语言
word