一、前言

目的:打算用golang写一个淘宝抢购插件,但是每次抢购前都需要手动登录,这样太麻烦了,因此想实现自动登录获取cookie。

结果:失败的尝试。

既然这次尝试是失败的,我为啥又要记下来呢?我只是想今后有同样的操作时,可以在这里找到一点经验。在找相关资料时,我发现Python有个库——Selenium可以模拟浏览器行为,自然就能实现自动登录。

二、登录请求参数

打开淘宝登录页面,首先正常登录,利用Fiddler抓取请求参数(如下图),然后分析请求参数的来源。ncoToken:参与生成ua的令牌;TPL_password_2:rsa加密后的密码;ua:包含浏览器信息等等(谷歌一下淘宝ua,一推关于ta的介绍。);um_token:登录令牌;其他参数就不解释了,好像有58个请求参数,不过有些是空值参数,也有固定值。

二、分析参数来源

打开浏览器的开发者模式,直接定位到nlogin.js(如下图),(使用编辑器格式化代码,方便阅读。)

1. ncoToken和um_token

这两个令牌不是由js生成的,在第一次访问页面时,就已经包含在页面中了。因此,我使用一个go程,开始是每隔三个小时请求一下登录页面,然后从响应中截取这个两个参数。

2. TPL_password_2

在nlogin.js搜TPL_password_2,发现elPasswordRSA的值就是TPL_password_2,如下图。

继续定位elPasswordRSA,发现赋值代码:

try {this.elPasswordRSA.val(this.password.encrypt(a)),this.form.all("form")0].elements.loginASRSuc.value = "1", this.password.input.val("")} catch (b) {}

然后定位密码加密算法(this.password.encrypt),从而发现了密码加密的原理,可以自动生成密码了:

encrypt: function (a) {return a && this.pbk && this.exponent ? (this.rsa || (this.rsa = new e, this.rsa.setPublic(this.pbk, this.exponent)), a = this.rsa.encrypt(a)) : a}

3. ua

这个参数很蛋疼,找遍了所有js,还是没有完全弄懂ta的原理,可能是我js水平不够。然后谷歌这个参数,发现有博主根据这个ua参数的代表信息,原理写了一篇文,就直接拿来用了。https://livezingy.com/ua_inputid-in-taobao-ua/

现在几个关键参数都弄到了,就开始构造请求模拟登录了,事实证明,是我想的太简单了,响应是服务器内部错误,wtf。

三、开始自闭

1. 检查参数正误

2. 修改获取令牌的时间

3. 检查加密算法、ua算法

期间不知道修改了多少次,请求了多少次,反正响应都是服务器内部错误。真想说一句mmp。

四、巧施美色,诱敌两伤

最终,我把整个登录页面都抓取 了下来,包括所有静态资源,重新部署在本地上。go build,创建了一个本地登录页面,只不过将form表单的action改成了本地restfulAPI,输入账号密码,借助本地路由请求到淘宝,响应正常了,真是surprise。如下图:

将响应另存为html文件,点击后跳转到了淘宝首页,显示是已经登录的状态。还不能高兴的太早,我要的是登录cookie,不是这种响应。带着正常响应后的cookie去请求个人中心页面,响应是正常的,将响应另存为html文件,点击后跳转到了淘宝vip页面,但是并不是登录状态。心态有点炸。

五、简而言之

留下几个猜想后面去尝试,但是结果就不记下来了。

1. 两个页面会话的cookie并没有共享,通过获取两个页面正常登录后的cookie,构造请求,分别请求两个页面就可以验证了。只要响应不是如下图,基本就正常了。

2. 把之前能正常响应中的url截取出来,自上而下分别请求ta们,带着请求后的cookie去请求抢购页面,看响应是否任需要登录。

记一次golang模拟登录淘宝相关推荐

  1. HTTP-C#模拟登录淘宝联盟并下载淘宝客订单xls

    本程序实现模拟登录淘宝联盟并且下载淘宝客订单xls文件.现提供源码下载,有不明白的可以问我,同时如果您有好的修改建议请回复.我是第一次开发Http程序,请多包涵. 本次开发环境与工具如下: IE9.0 ...

  2. 手把手教你用Python模拟登录淘宝

    作者 | 猪哥66 来源 | 裸睡的猪(ID:IT--Pig) 最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录淘宝的文章! 看了下网上有很多关于模拟 ...

  3. Python爬虫实战(5):模拟登录淘宝并获取所有订单

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  4. Python爬虫实战(5):模拟登录淘宝并获取所有订单(1)

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 本篇内容 1. python模拟登录淘宝网页 2. 获取登录用户的 ...

  5. python淘宝爬虫登陆功能和下单功能_Python 爬虫实战5 模拟登录淘宝并获取所有订单...

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 本篇内容 python模拟登录淘宝网页 获取登录用户的所有订单详情 ...

  6. Python 模拟登录淘宝

    看了下网上有很多关于模拟登录淘宝,但是基本都是使用scrapy.pyppeteer.selenium等库来模拟登录,但是目前我们还没有讲到这些库,只讲了requests库,那我们今天就来使用reque ...

  7. 模拟登录淘宝--Python

    模拟登录淘宝–Python 由于淘宝开始检测selenium,要绕过检测非常麻烦.故使用另外一款Python的自动化工具:Pyppeteer,来模拟登录淘宝获取cookie.目前没有遇到滑块验证(该有 ...

  8. 模拟登录淘宝并拍下购物车商品

    这两天收到朋友委托帮忙淘宝抢个东西 不多说,上代码 asyncio不太会,就当个多开selenium的工具用了 # don't forget to write today # ------Dunn W ...

  9. C++ 代码模拟登录淘宝、天猫、支付宝等电商网站的实现

    有关C++ 代码模拟登录淘宝.天猫.支付宝等电商网站的实现, 在群上有很多人问, 想来有许多人对此非常感兴趣, 其中的厉害关系在此不做深究, 这篇文章也仅仅提供一些基础的实现方法, 由于整个过程中基本 ...

最新文章

  1. 【实践】简洁大方的summernote 富文本编辑器插件的用发——导入篇
  2. Windows上使用bat实现备份一个月内的数据库数据到文件
  3. RoBERTa中文预训练模型:RoBERTa for Chinese
  4. mysql操作xml字段_SQL XML 字段操作
  5. ffmpeg最新源代码(定期更新)
  6. [iOS]CIFilter滤镜
  7. android程序root权限,android应用程序中应用root权限
  8. git 使用http方式的一个小问题
  9. 图解机器学习算法(2) | 模型评估方法与准则(机器学习通关指南·完结)
  10. N70常用软件大集合
  11. HTML+CSS基础课程 笔记
  12. Java的图片处理工具类(放缩、切割、水印等)
  13. 中国生物oa系统服务器地址,每周一库 | 第十八期:中国生物医学文献服务系统(SinoMed) | 四川大学图书馆...
  14. [系统安全] 二十五.WannaCry勒索病毒分析 (1)Python复现永恒之蓝漏洞实现勒索加密
  15. Guava-Splitter工具类
  16. MySQL安装问题 Starting the server 失败
  17. java+am+上午,java – 使用AM/PM以12小时格式显示当前时间
  18. win10硬盘锁怎么解除_如何解锁BitLocker加密的Win10系统【图文教程】
  19. win10+Ubuntu16.04+Quadro P600双系统安装以及独显驱动安装
  20. dojo框架的基本认识

热门文章

  1. 电容感应触摸屏工作原理
  2. 基于STM32F4的四轴航拍飞行器(开源)
  3. leetcode:2085. 统计出现过一次的公共字符串
  4. 清华领军计划计算机试题,清华大学领军计划测试物理试题含答案
  5. oracle存储过程和触发器结合database link的实例
  6. 使用three.js和CSS3DRenderer.js构建3D空间图片
  7. IT6516|ITE联阳IT6516BFN DP转VGA方案|替代IT6516|IT6516替代兼容方案
  8. Babylonjs 基础教程与填坑①入门常用网址
  9. 问题:LVM lvextend增加空间后,df查看还是原来空间
  10. 你有值得坚持的事么?咱一块坚持吧