阿里巴巴逆向js,request模块获取数据
python爬虫案例(电商平台)
阿里巴巴平台request模块获取数据
- 前言
- 一、逆向解析阿里巴巴平台详情页面的sign值
- 二、在请求头中加入sign值获取数据
- 1>获取评论成交数数据
- 2>效果展示
- 三、总结
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
一、逆向解析阿里巴巴平台详情页面的sign值
先找一个商品详情页面,根据页面上显示得数据去寻找该路由,然后利用谷歌自带得debug模式一步步去分析js加载情况…
获取到阿里巴巴生成的sign值地js函数,输入值加入商品得id就可以计算得到阿里巴巴得sign值
python代码如下:
import js2pydef get_des_psswd(data):jsstr = get_js()# 使用获取上下js2py生成一个上下文环境context = js2py.EvalJs()context.execute(jsstr)# ctx = execjs.compile(jsstr) # 加载JS文件return (context.h(data))# return (ctx.call('h', data)) # 调用js方法 第一个参数是JS的方法名,后面的data和key是js方法的参数def get_js():f = open("./des.js", 'r', encoding='utf-8') # 打开JS文件line = f.readline()htmlstr = ''while line:htmlstr = htmlstr + lineline = f.readline()return htmlstrif __name__ == '__main__': # 66f15958d3db6ded2e31b63c6dff914e_1637574478506print(get_des_psswd('f3e524beffeb74de6684f41df6206d83&1638771084690&12474478&{\"fcGroup\":\"offer-cbu\",\"fcName\":\"offerdetail-service\",\"fcArgs\":\"{\\\"serviceName\\\":\\\"offerFavoriteService\\\",\\\"params\\\":{\\\"offerId\\\":598029856572}}\"}'))
二、在请求头中加入sign值获取数据
1>获取评论成交数数据
代码如下(通过在请求头中加入sign数据,可以有效访问到接口里面得数据,切换IP可以重新获取):
# 评论获取
def comments(b, seller_id, seller_member_id):global g# 获取时间戳t = time.time()good_collection_time = int(round(t * 1000)) # 毫秒级时间戳good_collection_token = unqueue_cookies()# 分割获取token值good_collection_token = good_collection_token['_m_h5_tk'].split('_')[0]# 拼接sign值进行js加密sign = good_collection_token + '&' + str(good_collection_time) + '&12574478&' + '{"fcGroup":"offer-cbu","fcName":"offerdetail-service","fcArgs":"{\\"serviceName\\":\\"offerSatisfactionService\\",\\"params\\":{\\"memberId\\":\\"%s\\",\\"sellerId\\":%s,\\"offerId\\":%s,\\"isSignedForTm\\":false}}"}' % (seller_member_id, seller_id, str(b['Z']))# 将sign值加密sign = get_des_psswd(sign)# 发送请求try:data = {"sellerId\\":str(b['Z'])} # 拼接商品id数据data = quote(data, 'utf-8')good_comments_url = 'https://h5api.m.1688.com/h5/mtop.mbox.fc.common.gateway/1.0/?jsv=2.4.11&appKey=12574478&t=' + str(good_collection_time) + '&sign=' + sign + '&api=mtop.mbox.fc.common.gateway&v=1.0&type=jsonp&isSec=0&timeout=20000&dataType=jsonp&callback=mtopjsonp4&data=' + datacomments_count = 0while True:try:# 获取接口数据headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36","referer": 'https://detail.1688.com/','cookie': cookies()}SESSION.keep_alive = False # 关闭多余连接comments_response_html = SESSION.get(good_comments_url,headers=headers, timeout=5, verify=False, proxies=g[0])good_comments = comments_response_html.text.split('(')good_comments = good_comments[1].split(')')[0]good_comments = json.loads(good_comments)good_comment = good_comments['data']['result']['totalsStr']breakexcept Exception as e:print(e)if comments_count < 2:g = proxy_ip()comments_count += 1continueelse:comments_count += 1continueexcept Exception as g:print(g)good_comments = ''return good_comment
2>效果展示
三、总结
在这小编分享一波2022最新的Python教程。获取方式,私信小编.。。。
阿里巴巴逆向js,request模块获取数据相关推荐
- python中request方法_如何使用python语言中的request模块获取代码
在python设计语言中,可以使用request第三方包获取请求的参数等,可以利用请求路径获取静态代码,查看相关请求参数和指标等.下面利用一个实例说明request模块获取代码和参数,操作如下: 工具 ...
- JS从后台获取数据,前台动态添加tr标签中的td标签
功能描述: 要求从后台查询该省份的所有城市,然后动态的再前台固定的tr标签中添加相应的td标签来展示城市基本信息: 文章目录 #一.前台jsp及js源码 jsp:在固定的tr标签中添加一个id,通过j ...
- Request对象获取数据
1. Request对象 Request(.NET中的内置对象)---从客户端接收消息 获取前端的数据;比如form表单中的内容 ,cookis,表头信息,浏览器种类 2. 集合(对数据的封装) 对象 ...
- JS中使用${}获取数据
使用` ` 键 获取${}中的数据,不是单引号.(注:使用英文,左上角的~键) $("button").click(function(){$.get(`/try/ajax/demo ...
- request获取数据3种方法
[ASP中,Request 对象获取数据的3种方法:] 1.Request.Form:获取以POST方式提交的数据(接收Form提交来的数据): 2.Request.QueryString:获取地址栏 ...
- axios的响应拦截器 - 错误统一处理 / 获取数据繁琐
1. 问题 登录时,填写错误的用户名密码,没有错误提示(没有进入catch分支) 获取ajax的返回结果比较麻烦:res.data.data.xxxx 2.解决登录失败不报错的问题 2.1 分析原因 ...
- node.js的request模块
request模块让http请求变的更加简单.最简单的一个示例: 1: var request = require('request'); 2: 3: request('http://www.goog ...
- 前端js调用后端API获取数据的三种方法(2022.7.25)
前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...
- vue --- 从模块从父元素获取数据
vue的精彩之处在于其组件的可复用性.下面谈谈组件(component)如何从父元素获取数据 模块引用 首先说说,如何引用模块 <div id="app"><my ...
最新文章
- 费米悖论的三十种解释
- 微信公众平台开发:进阶篇(Web App开发入门)
- python——动态的增加实例方法、类方法、静态方法
- Android中通过自定义签名控件实现手写签名
- iOS中Block的基础用法
- C语言中指针数组和数组指针
- ORACLE数据泵还原(IMPDP命令)【转】
- android studio撤回快捷键,Android Studio常用快捷键、Android Studio快捷键大全
- 华人AI学者大盘点:清华培养了最多的高层次人才,韩家炜、吴恩达论文被引数“登顶”
- 亿图图示 软件下载与安装 20200715
- NCL中绘制中国任意省份的精确地图
- OCR文字识别经典论文详解
- C. Product 1 Modulo N
- 轻言壁纸微信小程序源码
- Luxurious Houses - CodeForces - 581B
- 旅游企业该怎么进行网络品牌推广呢?如何宣传和规划旅游商品?
- Android多线程断点续传下载原理及实现,移动开发工程师简历
- 安卓开发SDK等工具下载地址
- 点云库pcl从入门到精通 第十章
- Integrate就医服务平台
热门文章
- Yes yes yes yes yes yes
- CVPR 2018 | 腾讯AI Lab关注的三大方向与55篇论文
- 三种实现分布式锁的方式
- 【胖虎的逆向之路】02——Android整体加壳原理详解实现
- 中国大陆银行业金融机构法人名单(截至2020年末)
- FPGA---用FPGA加速机器学习应用(XILINX) 内含与CPU,GPU比较 (2017xilinx的宣讲)
- Modulo (mathematics)
- 美国历史最大10宗破产保护
- CLI 发行uni-app到微信小程序,如何不打开微信开发者工具去进行小程序发布?
- Construct2 第一次制作的小游戏