python爬虫之js逆向(一)

2023-10-27

python爬虫之js逆向(一)

写在前面

现在各种反爬手段很多,虽然我在工作的时候并没有遇到过(我的工作就是爬虫,但是基本上都是爬外网,google,都是企业级爬虫,很少像这样写垂直爬虫)。在平时的技术交流群中经常看到大神们说一些我没遇到过的的反爬手段,为了能够插上话题,为了升职加薪,今天终于下定决心开始学习各种反爬,并在此记录分享心得。本人刚刚上班没几个月,小白一个,有不对的地方希望大神能够指教。

网站分析

目标网站:http://www.300600900.cn/

首先当然是抓包分析返回的数据
或者直接将链接放到代码里面,将响应内容打印出来。
如果一样的话说明直接就能获取到,否则的话可能就是对网页进行了处理

在这里插入图片描述上面是用代码请求返回的响应,并没有返回你想要的数据。
那么问题来了,请随我接着往下看

解析

道高一尺,魔高一丈。打开浏览器f12.我们进行抓包分析,既然返回的是js,那么我们就从js下手。
因为返回的js里面有location 的变量,说明进行了跳转,其中重定向的链接是在第一次请求返回的响应里,用 JS 生成的,我们把响应下来的js扣下来,然后用python进行模拟js。
好了现在已经将js代码完全抠下来了,创建js文件,放入和脚本同样的目录等待导入。
现在我们开始进行js加载,其中有些用不到的参数,直接删掉
比如参数 curlocation 是当前页面的 href,没有用到,反而会给我们调试增加阻碍
因为我们没有 window 这个对象。接下来代码实现:

import requests
import execjs
node = execjs.get() #通过python代码去执行JavaScript代码的库
file = 'baikewangjia.js'
ctx = node.compile(open(file).read())
data = ctx.eval("data") #去执行js里面的函数变量
verify_data = ctx.eval("verify")
print(data, verify_data)

headers = {
    'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"
    }
url = "http://www.300600900.cn/"
session = requests.session()
session.get(url, headers=headers) #获取session
cookies = data.split('=')
session.cookies.set(cookies[0], cookies[1]) #设置cookies
next_url = url + '?security_verify_data=' + verify_data
session.get(next_url, headers=headers)
print(session.cookies)
cookies = requests.utils.dict_from_cookiejar(session.cookies)
res = session.get(url, headers=headers, cookies=cookies)
res.encoding = res.apparent_encoding
print(res.text)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python爬虫之js逆向(一) 的相关文章

  • 将 JSON 发布到 Python CGI

    我已经安装了 Apache2 并且 Python 可以工作 但我有一个问题 我有两页 一个是 Python 页面 另一个是带有 JQuery 的 Html 页面 有人可以告诉我如何让我的 ajax 帖子正常工作吗
  • scipy.optimize on pandas dataframe

    我试图搜索它 但结果很差 有人可以向我解释一下如何在 Pandas DataFrame 上执行 optimize minimize 以便最小化 DataFrame 中的类别和结果列之间的错误 考虑这个例子 import pandas as
  • Flask 中“缺少 CSRF 令牌”,但它在模板中呈现

    问题 当我尝试登录 使用 Flask login 时 我得到Bad Request The CSRF session token is missing但令牌正在呈现 在模板中 secret key 已设置 并且我在本地运行localhost
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • 为什么在访问 Python 对象属性时使用 getattr() 而不是 __dict__ ?

    在具有一定程度的 Python 对象自省的源代码示例和 SO 答案中 常见的模式是 getattr some object attribute name string 是否有理由优先选择这种模式 some object dict attri
  • 如何计算数据框中按另一列的列值分组的一列的连续字符串值?

    我有以下数据框 Levels Labels Confidence 0 Hands 0 8 0 Leg 0 7 0 Eye 0 9 1 Ear 0 9 1 Eye 0 8 2 Hands 0 9 2 Eye 0 8 3 Eye 0 8 我想检
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 将 Python Pandas DataFrame 写入 Word 文档

    我正在努力创建一个使用 Pandas DataFrames 的 Python 生成的报告 目前我正在使用DataFrame to string 方法 但是 这会作为字符串写入文件 有没有办法让我实现这一目标 同时将其保留为表格 以便我可以使
  • django 模板 - 如何动态访问变量?

    假设我有一个具有以下上下文的 django 模板 data1 this is data1 data2 this is data2 data name data2 现在我知道了data name 假设它是 data2 是否可以用它来访问变量d
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • ValueError:数据必须为正(boxcox scipy)

    我正在尝试将我的数据集转换为正态分布 0 8 298511e 03 1 3 055319e 01 2 6 938647e 02 3 2 904091e 02 4 7 422441e 02 5 6 074046e 02 6 9 265747e
  • 使用 subprocess.Popen() 或 subprocess.check_call() 时程序卡住

    我想从 python 运行一个程序并找到它的内存使用情况 为此 我正在使用 l a out lt in txt gt out txt p subprocess Popen l shell False stdout subprocess PI
  • 在请求中设置端口

    我正在尝试利用cgminer使用 Python 的 API 我对利用requests图书馆 我了解如何做基本的事情requests but cgminer想要更具体一点 我想缩小 import socket import json sock
  • Seaborn 中没有线性拟合的散点图

    我想知道是否有办法关闭seaborn中的线性拟合lmplot或者是否有一个等效函数可以生成散点图 当然 我也可以使用 matplotlib 但是 我发现 seaborn 中的语法和美学非常吸引人 例如 我想绘制以下情节 import sea
  • 为什么 Collections.counter 这么慢?

    我正在尝试解决罗莎琳德的基本问题 即计算给定序列中的核苷酸 并在列表中返回结果 对于那些不熟悉生物信息学的人来说 它只是计算字符串中 4 个不同字符 A C G T 出现的次数 我期望collections Counter是最快的方法 首先
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • UnicodeDecodeError:部署到 Heroku 时,“utf-8”编解码器无法解码位置 0 中的字节 0xff

    我尝试在heroku上部署我的简单django项目 但我不明白如何解决这个问题 这是git push heroku master remote Traceback most recent call last remote File tmp
  • 如何使用 enumerate 来倒数?

    letters a b c 假设这是我的清单 在哪里for i letter in enumerate letters 将会 0 a 1 b 2 c 我怎样才能让它向后枚举 如 2 a 1 b 0 c 这是一个很好的解决方案并且工作完美 i
  • 没有名为“turtle”的模块

    我正在学习并尝试用Python3制作贪吃蛇游戏 我正在进口海龟 我正在使用 Linux mint 19 PyCharm python37 python3 tk Traceback most recent call last File hom
  • 使用 MPI 的 Allreduce 对 Python 对象求和

    我正在使用使用 Python 中的字典和计数器构建的稀疏张量数组操作 我想让并行使用这个数组操作成为可能 最重要的是 我最终在每个节点上都有计数器 我想使用 MPI Allreduce 或另一个不错的解决方案 将其添加在一起 例如 使用计数

随机推荐

  • 【译】Rust 实现一个 DNS 客户端,我从中学到什么

    What I learned from making a DNS client in Rust 译文 Rust 实现一个 DNS 客户端 我从中学到什么 原文链接 https blog adamchalmers com making a d
  • 大津算法的matlab实现

    大津算法详解 一 算法功能 图像分割就是把图像分成若干个特定的 具有独特性质的区域并提出感兴趣目标的技术和过程 它是由图像处理到图像分析的关键步骤 大津算法也称最大类间差法 由大津于1979年提出 被认为是图像分割中阈值选取的最佳算法 计算
  • 用开卡工具重生SSD,SM2246XT一步一步开卡成功教程

    故障现象 不能进系统 用U盘从PE进入 过程很慢 卡住 进不了PE 直接拆下硬盘 用硬盘盒连接电脑 能识别 发现C盘还已经标红 D盘正常 还不错 文件都在 直接拷贝出来 接下来就是对他直接格式化 这里出现了问题 无论是用PE的还是windo
  • 前端知识题整理第二期

    1 js中的闭包指什么 有权访问另一个函数作用域中的变量的函数 创建闭包的常见方式 就是一个函数内部创建另一个函数 2 v if和v show的区别是什么 v if是动态的向DOM树内添加或删除DOM元素 v show本质是标签displa
  • STM32 硬件IIC 控制OLED I2C卡死问题

    更新通知 2023 09 06 STM32L151 固件库 使用I2C 太难了 又宕机了 建议不要在固件库版本上尝试硬件IIC 了 一般人真用不了 直接使用软件模拟的 或者不要使用固件库了 用HAL 库吧 据说HAL 库没这么多问题 不死心
  • 【深度学习与计算机视觉】13、深度学习中的目标检测视频笔记

    文章目录 一 目标检测是什么 二 RCNN 三 SPPnet 四 Fast R CNN 五 Faster R CNN 六 R FCN 七 YOLO v1 八 YOLO v2 九 YOLO v3 一 目标检测是什么 最小外接矩形 也就是最后要
  • 【RocketMQ】消息拉模式分析

    RocketMQ有两种获取消息的方式 分别为推模式和拉模式 推模式 推模式在 RocketMQ 消息的拉取一文中已经讲过 虽然从名字上看起来是消息到达Broker后推送给消费者 实际上还是需要消费向Broker发送拉取请求获取消息内容 推模
  • Redis持久化之RDB与AOF详解

    RDB和AOF机制 简介 RDB和AOF是redis数据持久化的两种机制 当然实际场景下还会使用这两种的混合模式 为了防止数据丢失以及服务重启时能够恢复数据 为什么需要持久化 Redis是个基于内存的数据库 服务器一旦宕机 内存中的数据将全
  • 排序链表

    1 链表快排 p gt q之间放着小于pivot的节点 q gt next tail之间放着大于pivot的节点 class Solution public ListNode sortList ListNode head quickSort
  • 在配置文件“e:/HB/my-project/tsconfig.json”中找不到任何输入。指定的 “include“ 路径为“[“**/*“]”,“exclude“ 路径为“[]”。

    问题展示 问题原因 你没有 ts 文件 却写了 ts文件的配置 vscode 检验不通过 解决方法 随便找个地方新建一个 ts 文件即可 我就在项目根目录中新建一个 ts 文件
  • D4RL的踩坑记录

    D4RL 的env get normalized score 在调用d4rl的库函数时用了env get normalized score 这里遇到的问题是 env has no attribute get normalized score
  • 旋转矩阵(Rotate Matrix)的性质分析

    学过矩阵理论或者线性代数的肯定知道正交矩阵 orthogonal matrix 是一个非常好的矩阵 为什么这么说 原因有一下几点 正交矩阵每一列都是单位矩阵 并且两两正交 最简单的正交矩阵就是单位阵 正交矩阵的逆 inverse 等于正交矩
  • html效果浮窗效果,网页浮窗成效

    当前位置 我的异常网 Web前端 网页浮窗成效 网页浮窗成效 www myexceptions net 网友分享于 2014 12 05 浏览 0次 网页浮窗效果Fixed固定位置的悬浮 font size 12px font family
  • Bad file descriptor (C:\ci\zeromq_1616055400030\work\src\epoll.cpp:100)

    问题描述 这个报错总是出现在使用conda 环境安装一些新包后 再登录jupyter notebook就报此错误 导致jupyter notebook 无法使用 解决 1 pip uninstall pyzmq 2 pip install
  • TP5整合的阿里云短信接口

    现阶段 短信的应用主要就是用来验证下手机号是不是正常的手机号 只要涉及到用户手机号的问题的时候 都会做短信验证码来验证下改手机号是否是正常手机号 接下来就是操作步骤 首先要在阿里云账号上开通短信功能 然后再设置自己的签名 和短信模板 先导入
  • ElementUi Upload上传组件调接口时踩坑(FormData传参)

    使用自定义Upload上传实现 参数 http request 意为 覆盖默认的上传行为 可以自定义上传的实现 是个function 使用Upload组件 因为饿了么提供的几种上传交互都不满足我们的业务 所以我需要自定义交互 先看一下代码里
  • Spring利用propertyConfigurer类 读取.property数据库配置文件

    1 Spring的框架中 org springframework beans factory config PropertyPlaceholderConfigurer类可以将 properties key value形式 文件中 一些动态设
  • 2023蓝桥杯Java研究生组赛题

    蓝桥杯Java研究生组 JavaA组看过来 这两个组别题目基本一样 第一次参加了Java研究生组 Java组应该没有C C 那么卷吧 前面几题感觉难度还行没有特别难 后面几个大题依旧是没法做 不知道多少分能拿省一 有参加过的大佬可以说一说吗
  • 手撕LeetCode困难题-------正则表达式匹配 Python实现

    昨天刚刚把Python正则表达式学完 今天必须立刻手撕一道相关LeetCode 这不 题目马上来了 题面 正则表达式匹配 给你一个字符串 s 和一个字符规律 p 请你来实现一个支持 和 的正则表达式匹配 匹配任意单个字符 匹配零个或多个前面
  • python爬虫之js逆向(一)

    python爬虫之js逆向 一 写在前面 现在各种反爬手段很多 虽然我在工作的时候并没有遇到过 我的工作就是爬虫 但是基本上都是爬外网 google 都是企业级爬虫 很少像这样写垂直爬虫 在平时的技术交流群中经常看到大神们说一些我没遇到过的