前一阵有个朋友采集了一堆的淘宝客推广链接,但很多都是加密后的格式http://s.click.taobao.com/t?e=zGU34CA7K%2BPkqB07S4%2FK0CITy7klxxrJ35Nnc0vWaHl37H18cjdMO0RFhunziOFb%2FYR38ThEJAQs2K2vhBq7dgXLmU%2BSx8tU3PLk9d5Pc2Up下文均简称此为淘客链接,朋友希望能转换成正常的淘宝链接,然后他再去自己的微博等地方单独推广这些商品。
他Google了一下,现有的大部分工具都是将普通的淘宝商品链接转换成淘宝客链接,没找到现成的工具可以反向操作的。朋友QQ问我有没办法实现,本来计划用c#写一个gui的工具给他,但他机器上没.net framework加上朋友对这些东西一知半解,还是用Python做了一个简单的实现这里就不放出最终的成品了,只放出操作的过程和核心的函数。
首先拿到一个淘宝客链接:淘客链接
然后在浏览器访问一下,抓一下中间跳转的过程:
挨个分析一下其中的调整以及逻辑就能反向解出正常的淘宝商品链接了。
我来按照上图的调整步骤挨个分析一下:
unescape
操作后用js做了一个跳转的操作实际上是用js生成了一个超链接简称为ET,然后用js模拟点击了此链接 ref
和et
,但是实际操作中如果仅仅手动增加这两个参数是不行的……这个链接有一个隐藏的参数即Referer ali_trackid
unescape
出tu参数得到ET,然后带上Referer(== TU)然后跳转到ET,再将最终的淘宝商品页面最后一个参数ali_trackid
去掉就是一个完全正常的淘宝商品链接了。
<code class="prettyprint" style="color: inherit; font-family: inherit;font-size:undefined; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;"># -*- coding:utf-8 -*-</span></span></code><p style="text-indent: 2em;"></p><p style="text-indent: 2em;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;">import requests, sys, urllib</span></span></p><p style="text-indent: 2em;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;">reload(sys)</span></span></p><p style="text-indent: 2em;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;">sys.setdefaultencoding('utf-8')</span></span></p><p style="text-indent: 2em;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;">url = 'http://s.click.taobao.com/t?e=zGU34CA7K%2BPkqB07S4%2FK0CITy7klxxrJ35Nnc0vWaHl37H18cjdMO0RFhunziOFb%2FYR38ThEJAQs2K2vhBq7dgXLmU%2BSx8tU3PLk9d5Pc2Up'</span></span></p><p style="text-indent: 2em;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;">def get_real_taobao(url):</span></span></p><p style="text-indent: 2em;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;"> _refer = requests.get(url).url</span></span></p><p style="text-indent: 2em;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;"> headers = {'Referer': _refer}</span></span></p><p style="text-indent: 2em;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;"> return requests.get(urllib.unquote(_refer.split('tu=')[1]), headers=headers).url.split('&ali_trackid=')[0]</span></span></p><p style="text-indent: 2em;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;">rel = get_real_taobao(url)</span></span></p><p style="text-indent: 2em;"><span class="com" style="color: rgb(136, 0, 0);"><span class="com" style="color: gray;">print rel</span></span></p>