iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 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://www.lsjlt.com/news/118124.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python和JS反爬之解决反爬参数 signKey
    目录实战场景系统分析实战场景 Python 反爬中有一大类,叫做字体反爬,核心的理论就是通过字体文件或者 CSS 偏移,实现加密逻辑 本次要采集的站点是:54yr55y855S15b...
    99+
    2024-04-02
  • Python和JS反爬怎么解决反爬参数signKey
    本篇内容主要讲解“Python和JS反爬怎么解决反爬参数signKey”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python和JS反爬怎么解决反爬参数signKey”吧!实战场景Python...
    99+
    2023-06-30
  • python反爬之懒加载
    # 在平时的爬虫中,如果遇到没有局部刷新,没有字体加密,右键检查也能看到清晰的数据,但是按照已经制定好的解析规则进行解析时,会返回空数据,这是为什么呢,这时可以在网页右键查看一下网页源代码,可以发现,在网页上的源代码中有些部分是正确的,...
    99+
    2023-01-30
    加载 python
  • JS参数反爬虫的方法是什么
    这篇文章主要介绍“JS参数反爬虫的方法是什么”,在日常操作中,相信很多人在JS参数反爬虫的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS参数反爬虫的方法是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-02
  • Python爬虫和反爬技术过程详解
    目录一、浏览器模拟(Headers)如何找到浏览器信息打开浏览器,按F12(或者鼠标右键+检查)点击如下图所示的Network按钮按键盘Ctrl+R(MAC:Command+R)进行...
    99+
    2024-04-02
  • Python如何破解反爬虫
    本篇文章给大家分享的是有关Python如何破解反爬虫,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通过用JS在本地生成随机字符串的反爬虫机制,在利用Python写爬虫的时候经常...
    99+
    2023-06-17
  • Java目标网站反爬虫怎么解决
    这篇“Java目标网站反爬虫怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java目标网站反爬虫怎么解决”文章吧。一...
    99+
    2023-06-02
  • 服务器如何解决反爬和IP被封问题
    服务器可以采取一些措施来解决反爬和IP被封的问题,如下所示: 使用代理IP:通过使用代理IP来隐藏真实的IP地址,可以避免被目标网...
    99+
    2024-05-06
    服务器
  • 服务器怎么解决反爬和IP被封问题
    服务器解决反爬和IP被封的方法:1、减慢网站爬取速率,能减小目标网站的压力;2、用动态拨号vps服务器设置变换IP,能解决反爬和IP被封的问题,但会降低获取速度。具体内容如下:减慢爬取速率那样目标网站的压力就会相对性减小,可是这么做的话,单...
    99+
    2024-04-02
  • 比较Golang和Python爬虫:反爬、数据处理和框架选择的差异分析
    深入探究Golang爬虫和Python爬虫的异同:反爬应对、数据处理和框架选择 引言:最近几年来,随着互联网的迅速发展,网络上的数据量呈现爆炸式的增长。爬虫作为一种获取互联网数据的技术手段,受到了广大开发者的...
    99+
    2024-01-20
    数据处理 框架选择 Python爬虫 Golang爬虫 反爬应对
  • 厦门服务器如何解决反爬和IP被封问题
    厦门服务器解决反爬和IP被封问题的方法:1、减慢网站爬取速率,能减小目标网站的压力;2、用动态拨号vps服务器设置变换IP,能解决反爬和IP被封的问题,但会降低获取速度。具体内容如下:1、减慢爬取速率那样目标网站的压力就会相对性减小,可是这...
    99+
    2024-04-02
  • 使用代理ip遇到反爬虫的解决方法
    这篇文章主要介绍使用代理ip遇到反爬虫的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!分布式爬虫。我们爬虫的时候可以采用分布式的方法,有一定几率起到反爬虫的作用,也可以增加抓取量。保存cookies。当模拟登...
    99+
    2023-06-14
  • 免实名服务器怎么解决反爬和IP被封问题
    免实名服务器解决反爬和IP被封的方法:1、减慢网站爬取速率,能减小目标网站的压力;2、用动态拨号vps服务器设置变换IP,能解决反爬和IP被封的问题,但会降低获取速度。具体内容如下:1、减慢爬取速率那样目标网站的压力就会相对性减小,可是这么...
    99+
    2024-04-02
  • 【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爬虫教程之bs4解析和xpath解析详解
    目录bs4解析原理:如何实例化BeautifulSoup对象:用于数据解析的方法和属性:xpath解析xpath解析原理:实例化一个etree对象:xpath( ‘xpa...
    99+
    2024-04-02
  • 教你用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
  • nginx反向代理请求参数丢失如何解决
    如果在使用nginx作为反向代理时发生了请求参数丢失的情况,可能是由于配置不正确或者代理服务器的限制导致的。以下是一些解决方法: ...
    99+
    2024-02-29
    nginx
  • Python数据分析之Python和Selenium爬取BOSS直聘岗位
    目录一、数据爬取的代码二、获取到的数据如图所示三、数据分析的代码四、学历分析五、工作经验分析六、14个热门城市的各区县招聘薪资情况七、各城市各区县的薪资情况八、技能栈一、数据爬取的代...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作