Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

news2024/11/28 4:13:15

Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

        • 1. 前言
        • 2. 实现过程
        • 3. 运行结果

1. 前言

文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到底怎样实现这个的过程,希望能够帮助到那些正在做js逆向相关操作的读者,需要代码的读者单独私信我吧!不过,需要注意的是:代码仅供学习,不能用于商业活动,望读者切记。。

2. 实现过程

说到js逆向,那么表明要抓取的数据不是来自一个静态页面,也就是说用requests访问这个页面,你得不到你想要的那些数据,那么,怎样得到那些数据呢?找相关链接接口,这通常涉及到ajax技术。因为有的接口上一些相关请求参数你是无法理解到其中的意义,所以需要通过js逆向,明白这些请求参数具体意义(当然有的也无法理解,但是可以明白的是这个参数值是怎样组成或者可以从哪里找到)。
请添加图片描述
既然是获取评论区的图片下载链接,当然也可以得到评论的相关数据,这些数据都来自这个接口,如下:
请添加图片描述
请求参数为:
请添加图片描述
可以看到请求参数中有两个键,分别为arg和head,通过这个接口后的启动器,找到相关js代码实现的过程,可以发现这个键head对应的字典的中键对应的值除了cid之外,其他的均为固定值,而cid值也可以说是固定的吧!(它这个值来自cookie中相关键的值,如下:)
请添加图片描述
请添加图片描述
请添加图片描述
至于arg这个字典里的键值,pageIndex值是和页数相匹配的;pageSize是每页的数量,;sortType为排序方式,有两种吧!一种是时间排序,另外一种为智能排序,默认情况下为智能排序;poiId应该是景点的id编号(这个值可以通过当前界面的script内部一个json数据中得到)。其他可以说基本上是固定的吧!如下:
请添加图片描述
poiId来自这个script标签下的json数据里边哈!请添加图片描述这个commentTagId参数值应该是指这个吧!(不一定对哈!)请添加图片描述
至于
https://m.ctrip.com/restapi/soa2/13444/json/getCommentCollapseList?_fxpcqlniredt=09031020210426062880&x-traceID=09031020210426062880-1689141447244-7704556

问号后面的参数,可以从这一段js代码中明白其组成原理,如下:
请添加图片描述
通过和上述图片中相关数据比较,读者应该可以发现图片中js代码中的t就是09031020210426062880,也就是cookie中那个键guid的值。

3. 运行结果

第1页的数据
请添加图片描述
第2页的数据
请添加图片描述

小编我也不知道能不能发表成功!所以在上述过程中,一些js逆向操作并没有说的很详细,希望读者理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/745698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主动配电网故障恢复的重构与孤岛划分统一模型(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

SIP协议学习(2)

文章目录 注册(REGISTER)1、AOR和Contact区别2、注册概述3、注册与定位服务4、注册超时处理5、注册消息6、多Contact地址处理7、下期预告 注册(REGISTER) 1、AOR和Contact区别 在学习注册之前,首先区分一下AOR和Cont…

Threads上线5天用户增至1亿,Threads软件常见问题百问百答

7月10日,脸书(Facebook)母公司Meta旗下新应用程序Threads上线的第5天,其用户数量已经超过1亿。这一增长速度打破聊天机器人ChatGPT的纪录——推出两个月内活跃用户量才破亿。 Threads或成为史上用户数增长速度最快的消费者应用。 …

Mysql数据库基础和增删改查操作

目录 一、数据库基本概念 二、数据库类型和常用数据库 1.关系型数据库 2.非关系型数据库 三、数据库的数据类型 四、SQL语句 1.简介 2.分类 五、SQL语句的使用 1.数据库操作 (1)创建数据库 ​编辑 (2)查看数据库 &am…

mac MySQL修改密码

简介: MySQL是一种常用的关系型数据库管理系统。在某些情况下,您可能需要关闭MySQL服务或修改root密码。本文将向您展示如何执行这些操作的步骤。 步骤1:关闭MySQL服务 打开MySQL软件并关闭它。 或者使用以下命令关闭MySQL服务&#xff1a…

conda的使用

一、conda 1、为什么使用conda 在安装Python包的过程中,可能遇到依赖包的问题。例如,要安装numpy,需要先安装BLAS和LAPACK等库。在使用pip等包管理工具时,这些依赖包需要手动安装,操作起来可能比较繁琐。而conda是一个…

pdf怎么添加水印图片?分享3个超实用解决方法

在使用PDF文件时,我们经常会看到一些设置的水印,这提醒观看者文件的所有权。给PDF文件添加水印是一种常见且实用的功能。为了解决如何给PDF添加水印的问题,我将介绍几种常用的方法。 方法一:使用WPS添加水印 WPS是我们常用的办公…

【分布式应用】zookeeper集群

目录 一、zookeeper概述1.1zookeeper工作机制1.2Zookeeper 数据结构1.3Zookeeper 应用场景1.4Zookeeper 选举机制第一次启动选举机制**非第一次启动选举机制 二、部署 Zookeeper 集群2.1环境配置2.2安装 Zookeeper 一、zookeeper概述 Zookeeper是一个开源的分布式的&#xff0c…

1.内核驱动中,驱动注册,阻塞IO,gpio子系统,中断处理的整体结合示例

一,功能实现要求 /*功能实现 在stm32开发板上实现功能 1.使用阻塞IO读取number变量的值,当number的值改变时打印number的值 2.注册KEY1按键的驱动和LED1的驱动以及对应的设备文件, 3.按键和指示灯设备信息放在同一个设备树的节点中 4.当KEY1…

TypeScript 类型体操:合并映射类型的处理结果为联合类型(记录)

一般索引索引 type boy {name : string,age : number } 对索引类型映射 type onlyBoy<obj> {readonly [key in keyof obj] : obj[key] } 使用 type res onlyBoy<boy>; 输出 这些都是对索引类型整体做的变换&#xff0c;变换的结果依然是一个索引类型。有的…

提示“无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动”,如何解决?

在aspx网站部署过程中&#xff0c;出现“无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动”的提示&#xff0c;如下图&#xff0c;如何解决&#xff1f; 解决方案1&#xff1a; Web.Config里面 把sessionState 的mode改为&quo…

ChatGPT对高校人才培养模式的挑战与应对策略思考

酷吗&#xff1f;输入指令后直接就能生成一大串代码&#xff0c;即使不懂相关技术也能玩转编程&#xff0c;这就是ChatGPT赋予你的“新能力”&#xff0c;除了写代码&#xff0c;ChatGPT还能帮你执行各种五花八门的任务。 AI工具如ChatGPT在行业中的广泛应用对于行业的人才结…

全网最牛,Python自动化测试-日志Log处理(超细)一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 日志就是用于记录…

如何安装本地Go Tour教程(或者叫A Tour of Go离线版),以及中文版安装不了该怎么办

Go 官方是有一个在线教程 A Tour of Go&#xff0c;可以在线学习 Go 的编程&#xff0c;并且有中文版。英文原版页面如下&#xff1a; 出人意料的是&#xff0c;Go 提供了离线版&#xff08;各个语言都有&#xff09;&#xff0c;下载安装之后就可以在本地编译运行查看结果&a…

python subprocess.run() subprocess.Popen()(执行系统命令、启动新的进程、连接到子进程的输入/输出管道)

文章目录 python subprocess基本函数subprocess.runsubprocess.Popensubprocess.Popen参数解释- args&#xff1a;要执行的命令及其参数。可以是一个字符串或一个字符串列表。- bufsize&#xff1a;指定缓冲区的大小。默认值为-1&#xff0c;表示使用系统默认的缓冲区大小。- e…

Redis基本全局命令(含key过期策略)

Redis基本全局命令 KEYEXISTSDELEXPIRETTLRedis的key过期策略TYPE KEY 返回所有满⾜样式&#xff08;pattern&#xff09;的key。⽀持如下统配样式。 h?llo 匹配 hello , hallo 和 hxlloh*llo 匹配 hllo 和 heeeelloh[ae]llo 匹配 hello 和 hallo 但不匹配 hilloh[^e]llo 匹配…

opencv-图像处理基础-二值图像

opencv学习01_图像处理基础_二值图像 1&#xff0e;二值图像 二值图像是指仅仅包含黑色和白色两种颜色的图像。 在计算机中&#xff0c;通过一个栅格状排列的数据集&#xff08;矩阵&#xff09;来表示和处理图像。例如&#xff0c;图 2-1 是 一个字母 A 的图像&#xff0c;计算…

【优选算法题练习】day4

文章目录 一、3. 无重复字符的最长子串1.题目简介2.解题思路3.代码4.运行结果 二、1004. 最大连续1的个数 III1.题目简介2.解题思路3.代码4.运行结果 三、1658. 将 x 减到 0 的最小操作数1.题目简介2.解题思路3.代码4.运行结果 总结 一、3. 无重复字符的最长子串 1.题目简介 …

Java设计模式之结构型-代理模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 1、静态代理类图 2、动态代理类图 三、角色设计 四、案例分析 1、静态代理 2、JDK动态代理 3、Cglib动态代理 五、总结 一、基础概念 代理模式是一种结构型设计模式&#xff0c;它用一个代理对象来封装一个目标对象&#xff0c;通常…

Java的运算符

运算符介绍 运算符是一种特殊的符号&#xff0c;用以表示数据的运算、赋值和比较等。 运算符介绍 算术运算符赋值运算符关系运算符 [比较运算符]逻辑运算符位运算符 [需要二进制基础]三元运算符 算术运算符 介绍 算术运算符是对数值类型的变量进行运算的&#xff0c;在 Ja…