如下图所示,详解各步骤:

1、用户请求登录;

2、请求获取二维码。请求地址:https://qrlogin.taobao.com/qrcodelogin/generateQRCode4Login.do?from=alimama,from参数代表来源,本示例演示的是阿里妈妈,其他来源请自行摸索;

3、返回二维码地址与lgToken。执行第二步操作,淘宝网会返回这样的JSON:
{
success: true,
message: "null",
url: "//img.alicdn.com/tfscom/TB1Rb1yQpXXXXXTapXXwu0bFXXX.png",
lgToken: "0e7fdfec57971ab22759ef2a0e420afb",
adToken: "1877bc503d6d23555241d4df3b6d6fc7"
}
其中url就是登录二维码的地址,lgToken用于后续登录校验,其他响应参数请忽略;

4、渲染二维码,等待用户扫码。该步骤主要是将淘宝网返回的二维码可视化渲染到前台用户,可以采用网页展示,也可以本地应用程序方式把二维码的图片给呈现出来,等待用户的扫描操作;

5、根据lgToken,开始登录状态验证。在等待用户扫描操作的过程中,要同时开始用户登录状态的验证,该操作是异步执行的。

5.1  先校验二维码登录状态,二维码登录状态验证地址:https://qrlogin.taobao.com/qrcodelogin/qrcodeLoginCheck.do,
两个参数分别是:
defaulturl,其值写死为:http://login.taobao.com/member/taobaoke/login.htm?is_login=1
lgToken,其值为第2步返回的lgToken值。

循环请求校验地址,每次请求都会返回类似下面的json:
{"code":"10000","message":"login start state","success":true}
其中,code=10004表示二维码已过期;code=10006会返回url,表示用户扫码确认登录

5.2  当code=10006,获取url,带上返回的cookie请求该url。特别注意,淘宝网为进行不同站点的session同步,会存在多次302的跳转操作,所以,请不停的跳转直至该请求返回200

6、用户扫码并确认登录。用户扫码确认,会发送请求给淘宝。
7、淘宝网接到确认扫码,返回登录成功。
8、保存登录Cookie信息
9、提示用户登录成功

展示一部分Java的代码片段:

 public void checkAndSetLoginStatus(String lgToken) {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {Map<String, String> params = newHashMap();params.put("defaulturl", "http://login.taobao.com/member/taobaoke/login.htm?is_login=1params.put("lgToken", lgToken);int retryTimes = 1;HttpResponse loginCheckResp =HttpUtil.post("https://qrlogin.taobao.com/qrcodelogin/qrcodeLoginCheck.do null);QRcodeLoginCheck loginCheck =JSON.parseObject(loginCheckResp.getResponse(), QRcodeLoginCheck.class);while (!loginCheck.isLoginSuccess()) {if(loginCheck.isExpire() || retryTimes++>30){redisService.set(loginKey, QRCODE_EXPIRED+"");log.warn("Taobao login QRCode is expire or long time no scan.");return;}ThreadSleep.sleep(1500);loginCheckResp =HttpUtil.post("https://qrlogin.taobao.com/qrcodelogin/qrcodeLoginCheck.do null);loginCheck =JSON.parseObject(loginCheckResp.getResponse(), QRcodeLoginCheck.class);}HttpResponse httpResponse = HttpUtil.post(loginCheck.getUrl(), loginCheckResp.getCookieStore());while(httpResponse != null && httpResponse.is302Direct()){String location = httpResponse.getLocaltion();httpResponse = HttpUtil.post(location, httpResponse.getCookieStore());}byte[] data = new JavaSerializer().to(httpResponse.getCookieStore());redisService.set(sessionKey, Base64.encodeBase64String(data));}});thread.setName("TB_Login_Thread");thread.start();}

  

转载于:https://www.cnblogs.com/kalman/p/11521812.html

[淘宝客技术篇007]如何登录阿里妈妈(下)相关推荐

  1. [淘宝客技术篇006]如何登录阿里妈妈(上)

    "红莲即将绽放,双星终会汇聚,命运的轮转已经开始"! 登录阿里妈妈,其实就是登录淘宝,这是一个非常非常大的话题,所以我打算花大篇幅来说,这是上篇. 我相信你百度下也有很多说登录淘宝 ...

  2. [淘宝客技术篇006]如何登录阿里妈妈-《登录淘宝网·二维码实现法》(下)

    <登录淘宝网·二维码实现法> 如下图所示,详解各步骤: 1.用户请求登录: 2.请求获取二维码.请求地址:https://qrlogin.taobao.com/qrcodelogin/ge ...

  3. [淘宝客技术篇007](无需登录)淘宝天猫优惠券JSON接口1

    今天,小星给大家分享的是一个非常重要,非常有意义的接口:获取淘宝天猫优惠券的JSON接口. 先上个链接: http://uland.taobao.com/cp/coupon_list?pid=mm_2 ...

  4. python爬去淘宝客订单_如何采集阿里妈妈后台的淘客订单

    在这里小龙只提供一个可用的方法,具体代码需要亲们自主开发,小龙开发的不便放出,请见谅! 小龙在这里使用的语言是Python,版本是3.6.3,这里使用并发写入效果比较好的mongodb来存储数据. 用 ...

  5. [淘宝客技术篇005]如何取站点id和推广位id

    我们知道,生成一个用于推广的淘客链接,是需要指定对应的站点id和推广位id的,也就是siteid和adzoneid. 今天,火星来客跟大家分享两个不同的方法获取站点id和推广位id. 方法一:直接获取 ...

  6. [淘宝客技术篇008](无需登录)淘宝天猫优惠券JSON接口1

    今天,小星给大家分享的是一个非常重要,非常有意义的接口:获取淘宝天猫优惠券的JSON接口. 先上个链接: http://uland.taobao.com/cp/coupon_list?pid=mm_2 ...

  7. [淘宝客技术篇002]如何自由搜索淘宝客商品

    很多人经常来问火星来客,怎么更优雅的获取到某个商品是否支持淘客,或者根据标题关键字搜索淘客商品? 火星来客不是特别清楚在淘宝开放平台是否有类似接口,如果有,自然最好.但火星来客今天要跟大家说的是另外一 ...

  8. python 淘宝客服 机器人_Python实现资源代下|实现机器值守|全自动淘宝自动发货机器人...

    原标题:Python实现资源代下|实现机器值守|全自动淘宝自动发货机器人 发货机器人 帮你实现:淘宝虚拟商品的自动值守.自动资源下载.自动Email发货 1.运作流程 Trip: 使用小附件方式发送邮 ...

  9. 淘宝联盟代码html无法显示,阿里妈妈的iconfont的引用问题

    一.先进官网 我们看到了上面的这些图标,是不是很心动,阿里妈妈就是给力,给马老师点赞,但是问题来了我们怎么去使用呢. 二.点击图标 嘿嘿,上面的操作步骤我就不多说了吧,我相信大家都会做的,接下来我们就 ...

最新文章

  1. RadioButton 自定义控件
  2. Google发布新API,支持训练更小、更快的AI模型
  3. LENOVO 充到60%就会停止充电
  4. nginx利用proxy_cache来缓存文件
  5. Stackoverflow:您从未见过的7个最佳Java答案
  6. Python+Appium寻找蓝牙/wifi匹配
  7. 流量卡官网源码多功能集成式源码
  8. 【Python】表白代码
  9. 数据库并发一致性案例分析(存取钱)
  10. 使用Nmon监控Linux的系统性能
  11. linux查看接口的命令,linux shell命令查看接口索引--ip link show
  12. 程序员面试金典——9.3魔术索引
  13. win10 SqlServer2008 卸载 亲测可行
  14. Linux学习笔记(一):Linux介绍
  15. Pulling without specifying how to reconcile divergent branches is discouraged.
  16. 调用Runtime.getRuntime().exec()执行Linux脚本导致程序挂住的问题分析
  17. 水晶报表(Crystal Report)- 水晶报表常见问题总结
  18. 净现值与投资准则 - 财务管理(八)
  19. 为什么极品飞车服务器维修,极品飞车:无极限赛车无法连接服务器是什么原因...
  20. 寻找输入数字中的全数字(pandigital) python编程

热门文章

  1. 求与下面谓词公式等值的前束范式_求下列公式的前束范式
  2. B2B2C商城系统 如何实现商品分类功能
  3. NOC大赛2022NOC软件创意编程初赛图形化小低组(小学高年级组)
  4. 前端开发面试题—JavaScript原型链
  5. 毕业设计 嵌入式 MP3音乐播放器设计与实现
  6. java Appium之环境搭建
  7. linux 打开大文本,文本编辑器打开大(巨大,巨大,大)文本文件
  8. 单例模式双重锁中volatile的作用
  9. carplay是否可以用安卓系统_carplay安卓能用吗
  10. springBoot Aop打印日志