赞同 1
分享

淘宝加密恶心人的语法

简介:今天看到好多私活都是做电商平台商品信息爬取的,然后我决定看看模拟淘宝登录的代码,然后就有了这些魔幻的经历。
  2020.11.10
  Bug Man
  1
  68
  172.17.0.1
  中国.上海
 
 

我原来准备自己写登录的,突然在知乎上看一个大佬分享自己写的第三方包,然后我就去下载来看看。这一看不要紧,看了之后我突然觉得我行了,我好像也可以写第三方包了(开玩笑的人家还是很厉害的)。这个包在网上没有太多的文档,最好的做法就是直接看源码(好接地气的注释),这里推荐一下这个包DecryptLoginpython爬虫模拟淘宝登陆?;

但是我发现一个问题,那就是我没仔细看作者发的提供支持终端的表格,淘宝只支持使用扫码登录的方式去登录。于是我就决定看看这个PC端和Mobile端模拟登录的困难程度,我就直接看点击登录js做的操作,发现不是很好看,只知道最后密码是一个16进制的字符串。

然后我直接取16进制转换发现不行(这肯定不行嘛,淘宝的小婊贝们怎么可能如此轻易的让你爬到呢),然后我就直接上网搜然后就搜到了这篇关于淘宝加密算法的文章,淘宝密码加密方式分析,及python实现。这篇我也没看完但是给了点启发在点击js文件中搜索encrypt,然后找到了加密的位置。

下面我展示的这个方法的主要功能是用来讲一个列表中的数字进行16进制的转换,然后拼接在一起然后之后就是最终post请求中的password了: 点击登录js文件

但是其中恶心人的语法来了,在这个循环中的三元表达式后面有两组表达式是怎么回事?我也很纳闷,这是es6的新语法?然后再前端交流群里面发出来,他们也很纳闷这个语法起很怪,然后我就在console中验证js语法是否正确,也有可能是我格式化过来的时候有差错呢。 console中校验js语法

最后我发现其实这就是他们故意这么写的,后面的这两组表示是其实跟三元表达式没有关系,就是用来当作if语句来用的这么一个语法。 其实就是当作if语法

总结:虽然到目前为止我还没有完全理解淘宝登录的所以依赖方法,但是在这个过程中遇到的新鲜语法还算是个比较有趣的过程,而且这个方法的真是作用到底做不是RSA的实现我也没有结论,我还得再看看2333。