返回顶部
首页 > 资讯 > 后端开发 > Python >Python和JS反爬之解决反爬参数 signKey
  • 453
分享到

Python和JS反爬之解决反爬参数 signKey

2024-04-02 19:04:59 453人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录实战场景系统分析实战场景 python 反爬中有一大类,叫做字体反爬,核心的理论就是通过字体文件或者 CSS 偏移,实现加密逻辑 本次要采集的站点是:54yr55y855S15b

实战场景

python 反爬中有一大类,叫做字体反爬,核心的理论就是通过字体文件或者 CSS 偏移,实现加密逻辑

本次要采集的站点是:54yr55y855S15b2x(Base64 加密) 站点地址为:https%3A%2F%2Fmaoyan.com%2Ffilms%2F522013(URL 编码)

上述地址打开之后,用开发工具选中某文字之后,会发现 Elements 中,无法从源码读取到数据,

如下图所示:

类似的所有场景都属于字体编码系列,简单理解就是:

服务器源码,无法直接读取文字。

也可以用请求页面预览选项卡,判断是否为字体加密,当出现如下结论时,可以判断,其中数字信息,显示为方框。

系统分析

本以为直接进入字体加密解密逻辑,本案例就可以解决,但是当打开请求头之后,发现出现了一个请求参数 signKey,而且还加密了,那解决字体反爬前,先解决这个加密问题吧。

打开控制台,直接检索 signKey 参数,发现只有一个文件所有涉及。

打开 common.js 文件之后,进行格式化,继续检索关键字。

直接将断点打在 688 行附近,然后刷新页面,等待断点请求。

当发现关键字 _0x371d 时,就知道,这里需要一点点扣 JS 代码了,又是一个细致活。

待提取的 JS 代码如下所示:

u = function(x) {
var d = x[a(_0x371d("0x14c"))]
 , e = x[a(_0x371d("0x14d"))]
 , _ = x[a(_0x371d("0x14e"))]
 , t = void 0 === _ ? 1 : _
 , n = Math[a("0x82")](10 * Math[a(_0x371d("0x14f"))]())
 , i = (new Date)[a(_0x371d("0x150"))]()
 , o = typeof window !== a("0x4") && window[_0x371d("0x151")]
 , s = o[a(_0x371d("0x152"))]
 , u = a(_0x371d("0x153")) + d.toUpperCase() + a("0x87") + i + a(_0x371d("0x154")) + s + _0x371d("0x155") + n + a("0x89") + e + a(_0x371d("0x156")) + t
 , f = a(_0x371d("0x157"));
return {
   timeStamp: i,
   index: n,
   signKey: (0,
   r[a(_0x371d("0x158"))])(u + f),
   channelId: e,
   sVersion: t,
   WEBdriver: c()
}

每次页面刷新的时候,都可以捕获一下相关参数与值。

例如,这里可以直接得到 d = "GET",写入到我们的 JS 文件即可。

第一步加密之后,得到各个参数值,其中 u 与 f 比较重要。 通过每次断点,可以依次将代码逐步还原。 下述是一些比较重要的步骤,如果路径不清楚,可以点击下面卡片,直接询问橡皮擦。

获取 f 值

获取 _0x5827 函数内容

下述内容 r 是一个数组,可以通过索引获取其中的字符串

a(_0x371d("0x158"));
("default");

随着代码的深入,发现了最核心 signKey 参数的加密位置,截图如下:

这就是一个大工程了,没有 1 个小时,无法翻译完毕。

我们先将核心的函数扣出来,然后一点点进行替换,核心未翻译代码如下所示:

function() {
var d = e(7)
 这里面好多代码
        , v = u
        , M = f;
        s = m(s, c, u, f, i[l + 0], 7, -680876936),
        f = m(f, s, c, u, i[l + 1], 12, -389564586),
        u = m(u, f, s, c, i[l + 2], 17, 606105819),
        c = m(c, u, f, s, i[l + 3], 22, -1044525330),
 这里面好多代码
}()

翻译的时候,关注几个重点参数即可。 ** _0x371d **

var _0x371d = function (x, d) {
  return (x -= 0), _0x5827[x];
};

** _0x5827 **

var _0x5827 = ["parseJSON", "parseXML", "ajaxSettings", "ajaxSetup", "statusCode", "canceled", "success", "dataType", …………;

复制到编辑器中,直接好家伙,超过 7W 字了。

加密变量 a

var a = function (x, d) {
  return (x -= 0), r[x];
};

加密变量 r

加密参数 d

了解上述几个值的取值方式,解决 signKey 就变得非常简单了。

除此之外,最简单的办法是直接将 common.js 文件搭建在本地,然后用 Python 去调用,直接就可以获取到对应的数据。

JS 代码在 Python 中执行,使用如下 Demo 即可实现:

import execjs
# 执行 JS 文件
js = "js 脚本内容"
ctx = execjs.compile(js)
x = {
    'method': 'GET',
    'channelId': 40011,
    'sVersion': 1,
    'type': 'object'
}
# 传入参数
n = ctx.call('翻译之后的加密函数名', x)

到此这篇关于Python和JS反爬之解决反爬参数 signKey的文章就介绍到这了,更多相关反爬参数 signKey内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python和JS反爬之解决反爬参数 signKey

本文链接: https://lsjlt.com/news/118124.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python和JS反爬之解决反爬参数 signKey
    目录实战场景系统分析实战场景 Python 反爬中有一大类,叫做字体反爬,核心的理论就是通过字体文件或者 CSS 偏移,实现加密逻辑 本次要采集的站点是:54yr55y855S15b...
    99+
    2024-04-02
  • Python和JS反爬怎么解决反爬参数signKey
    本篇内容主要讲解“Python和JS反爬怎么解决反爬参数signKey”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python和JS反爬怎么解决反爬参数signKey”吧!实战场景Python...
    99+
    2023-06-30
  • JS参数反爬虫的方法是什么
    这篇文章主要介绍“JS参数反爬虫的方法是什么”,在日常操作中,相信很多人在JS参数反爬虫的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS参数反爬虫的方法是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-02
  • python反爬之懒加载
    # 在平时的爬虫中,如果遇到没有局部刷新,没有字体加密,右键检查也能看到清晰的数据,但是按照已经制定好的解析规则进行解析时,会返回空数据,这是为什么呢,这时可以在网页右键查看一下网页源代码,可以发现,在网页上的源代码中有些部分是正确的,...
    99+
    2023-01-30
    加载 python
  • Python爬虫和反爬技术过程详解
    目录一、浏览器模拟(Headers)如何找到浏览器信息打开浏览器,按F12(或者鼠标右键+检查)点击如下图所示的Network按钮按键盘Ctrl+R(MAC:Command+R)进行...
    99+
    2024-04-02
  • Python如何破解反爬虫
    本篇文章给大家分享的是有关Python如何破解反爬虫,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通过用JS在本地生成随机字符串的反爬虫机制,在利用Python写爬虫的时候经常...
    99+
    2023-06-17
  • python解决网站的反爬虫策略总结
    本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。这里我们只讨论数据采集部分。 一般网站从三个方面反爬...
    99+
    2022-06-04
    爬虫 策略 网站
  • Java目标网站反爬虫怎么解决
    这篇“Java目标网站反爬虫怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java目标网站反爬虫怎么解决”文章吧。一...
    99+
    2023-06-02
  • 服务器怎么解决反爬和IP被封问题
    服务器解决反爬和IP被封的方法:1、减慢网站爬取速率,能减小目标网站的压力;2、用动态拨号vps服务器设置变换IP,能解决反爬和IP被封的问题,但会降低获取速度。具体内容如下:减慢爬取速率那样目标网站的压力就会相对性减小,可是这么做的话,单...
    99+
    2024-04-02
  • 服务器如何解决反爬和IP被封问题
    服务器可以采取一些措施来解决反爬和IP被封的问题,如下所示: 使用代理IP:通过使用代理IP来隐藏真实的IP地址,可以避免被目标网...
    99+
    2024-05-06
    服务器
  • 比较Golang和Python爬虫:反爬、数据处理和框架选择的差异分析
    深入探究Golang爬虫和Python爬虫的异同:反爬应对、数据处理和框架选择 引言:最近几年来,随着互联网的迅速发展,网络上的数据量呈现爆炸式的增长。爬虫作为一种获取互联网数据的技术手段,受到了广大开发者的...
    99+
    2024-01-20
    数据处理 框架选择 Python爬虫 Golang爬虫 反爬应对
  • python网络爬虫之如何伪装逃过反爬虫程序的方法
    有的时候,我们本来写得好好的爬虫代码,之前还运行得Ok, 一下子突然报错了。 报错信息如下: Http 800 Internal internet error 这是因为你的对象网站设置了反爬虫程序,如果用现...
    99+
    2022-06-04
    爬虫 逃过 程序
  • 厦门服务器如何解决反爬和IP被封问题
    厦门服务器解决反爬和IP被封问题的方法:1、减慢网站爬取速率,能减小目标网站的压力;2、用动态拨号vps服务器设置变换IP,能解决反爬和IP被封的问题,但会降低获取速度。具体内容如下:1、减慢爬取速率那样目标网站的压力就会相对性减小,可是这...
    99+
    2024-04-02
  • 免实名服务器怎么解决反爬和IP被封问题
    免实名服务器解决反爬和IP被封的方法:1、减慢网站爬取速率,能减小目标网站的压力;2、用动态拨号vps服务器设置变换IP,能解决反爬和IP被封的问题,但会降低获取速度。具体内容如下:1、减慢爬取速率那样目标网站的压力就会相对性减小,可是这么...
    99+
    2024-04-02
  • 使用代理ip遇到反爬虫的解决方法
    这篇文章主要介绍使用代理ip遇到反爬虫的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!分布式爬虫。我们爬虫的时候可以采用分布式的方法,有一定几率起到反爬虫的作用,也可以增加抓取量。保存cookies。当模拟登...
    99+
    2023-06-14
  • python爬虫之bs4数据解析
    一、实现数据解析 因为正则表达式本身有难度,所以在这里为大家介绍一下 bs4 实现数据解析。除此之外还有 xpath 解析。因为 xpath 不仅可以在 python 中使用,所以 bs4 和 正则解析一样,仅仅是简...
    99+
    2022-06-02
    python bs4数据解析 python bs4 python爬虫
  • 【Python爬虫】数据解析之bs4解析和xpath解析
    🔥一个人走得远了,就会忘记自己为了什么而出发,希望你可以不忘初心,不要随波逐流,一直走下去🎶 🦋 欢迎关注🖱点赞👍收...
    99+
    2023-09-06
    python 爬虫 开发语言
  • Python中常见的反爬机制及其破解方法总结
    一、常见反爬机制及其破解方式 封禁IP,使用cookie等前面文章已经讲过 现在主要将下面的: ​ ~ 验证码 ​ —> 文字验证码 —> OCR...
    99+
    2024-04-02
  • 计算机网络中常见网站反爬虫的解决措施
    这篇文章主要介绍计算机网络中常见网站反爬虫的解决措施,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、最简单的方式便是校验User-Agent除了 User-Agent,所有通过 HTTP 请求传递到服务器的客户端参...
    99+
    2023-06-15
  • 教你用python和php写一个随机user_agent,突破反爬,实现数据大量采集
    python生成一个随机的user_agent # -*- coding: utf-8 -*- import random dd = {} list1 = ['100.0.4896.20', '100.0.4896.60', '101.0....
    99+
    2023-09-01
    php 开发语言 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作