Python爬虫系列之饿了么逆向,如何解决淘宝风控

        关于淘系的数据抓取,可能涉及到的一个参数就是sign,sign的值是有一个计算公式的,基于已有的经验,知道这种参数一般多是会保存在js文件里的。

        饿了么接口其实和淘宝是类似的,只要破解了淘宝,饿了么的也不在话下。下面我们来看下具体步骤。

(1)在淘宝页面,打开开发者工具(F12),进行调试,一个个查找在哪里出现的sign的赋值

…忽略搜索过程,可以发现在sign的计算关键代码在mtop.js 中,也就是
(https://g.alicdn.com/mtb/lib-mtop/2.3.16/mtop.js)
如图,可以看到sign的具体计算方法,也就是下图的j

(2)确定具体方法,直接贴出来代码如下:

j = h(d.token + “&” + i + “&” + g + “&” + c.data)

if (d.H5Request === !0) {
var
f = “//” + (d.prefix ? d.prefix + “.” : “”) + (d.subDomain ? d.subDomain + “.” : “”) + d.mainDomain + “/h5/” + c.api.toLowerCase() + “/” + c.v.toLowerCase() + “/”, g = c.appKey || (“waptest” === d.subDomain ? “4272” : “12574478”), i = (new
Date).getTime(), j = h(d.token + “&” + i + “&” + g + “&” + c.data), k = { jsv: x, appKey: g, t: i, sign: j }, l = { data: c.data, ua: c.ua }; Object.keys©.forEach(function (a) {
“undefined” == typeof
k[a] && “undefined” == typeof
l[a] && (k[a] = c[a])
}), d.getJSONP ? k.type = “jsonp” : d.getOriginalJSONP ? k.type = “originaljsonp” : (d.getJSON || d.postJSON) && (k.type = “originaljson”), d.querystring = k, d.postdata = l, d.path = f
}
(3)根据(2)中的函数方法,可以看出来是由一些参数通过&连接起来的。通过上面的代码,可以看出来

3.1 token是从cookie里面取出来的。

在无cookie状态下去访问该请求:https://acs.m.taobao.com/h5/mtop.taobao.wsearch.h5search/1.0/##,对方会返回关键Cookies信息,_m_h5_tk和_m_h5_tk_enc,接下来会用到。那么token就是_m_h5_tk的值得下划线前面的值
 3.2 i 是时间戳,精确到毫秒

3.3 data 是传入的参数(通过request传入的参数值,包括搜索的关键词等)

PS:断点调试

建议使用谷歌内核,可以在函数附近添加断点,如下图可以看到,然后右边可以监视每个变量的值,从而可以知道此时的变量值,继而验证我们的是否算的正确

很多小伙伴纷纷留言说为什么不走app 逆向呢,我想说,并不是我逆向不了,而是通过frida搭建rpc服务,速度确实很慢,而且很容易被淘宝风控。最近就有好多通过hook 走的,纷纷被淘宝风控用不了了,而通过网页接口完全没事,网页端要先限制其实是很难的。另外在逆向的过程中,通过对比和网页接口,发现了淘系的接口的共同特点,并且通过网页接口可以请求到app 的数据,这一点不知道淘宝爸爸自己知不知道这个问题,好了就说这么多,不然要查水表了。欢迎技术交流沟通> 点击这里联系我<  

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
嗨!对于爬虫中的 JavaScript 逆向案例,我可以给你提供一个简单的示例。请注意,这个示例只是为了帮助你理解逆向过程,真实的应用中可能涉及法律和伦理问题,请合法使用爬虫技术。 假设我们要爬取一个网站上的某个页面数据,但是该页面通过 JavaScript 动态生成。我们可以通过分析网页的 JavaScript 代码来逆向工程,获取所需数据。 首先,打开 Chrome 浏览器并进入开发者工具(按 F12 键或右键点击页面并选择“检查”)。然后切换到“网络”选项卡。 接下来,在浏览器地址栏中输入目标网页的 URL 并按下回车,浏览器将开始加载页面。在网络选项卡中,你将看到所有请求和响应的列表。 查找其中一个请求,该请求可能包含我们所需的数据。点击该请求并查看其请求头、响应头和响应体。 在响应体中,你可能会看到一些 JavaScript 代码,这些代码负责生成页面上的内容。你可以仔细阅读该代码,并找到生成目标数据的部分。 如果你发现目标数据是通过 Ajax 请求获取的,你可以查看该 Ajax 请求的 URL 和参数,然后使用 Python 的 requests 库或其他适当的方法模拟该请求,并解析响应获取数据。 如果你发现目标数据是在 JavaScript 代码中直接生成的,你可以尝试分析代码逻辑并编写相应的 Python 代码来模拟该过程。这可能涉及到使用 JavaScript 解释器或库来执行 JavaScript 代码。 需要注意的是,JavaScript 逆向工程是一项复杂的任务,需要对 JavaScript 和网络协议有一定的理解。同时,网站所有者可能会采取一些反爬虫措施来阻止你的行为,所以请务必遵守法律法规和网站的使用规则。 希望这个示例能够帮助你入门 JavaScript 逆向工程。如果你有任何其他问题,欢迎继续提问!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值