某豆*DATA数据加密

news/2024/7/19 11:56:17 标签: 爬虫, python

一、确定逻辑

获取的数据复制给 window.__DATA__

在这里插入图片描述

全局搜索,确定位置

image-20211203112709923

跟进去发现,在这个位置生成数据

image-20211203112823406

验证一下

image-20211203113006739

二、调试

巴拉巴拉

三、搭建解密服务

var r = "WKVZcEaRd7/………………";


var i = 16
var Q = 4096
var p = {
    start: 2,
    end: 7
}
var K = {}

…………………………………………………………………………………………………………………………………………………此处省略N字……………………………………………………………………………………………………………………………………………………………………………………

function decrypt(r) {
    var a = encry2arr_from(r, "base64") // 0
        ,
        s = Math.max(Math.floor((a.length - 2 * i) / 3), 0) // 40
        ,
        u = a_slice(a, s, s + i); // 41
    a = concat([a_slice(a, 0, s), a_slice(a, s + i)]); // 43  45  47
    var c_data = hash(concat([u, encry2arr_from("")])); // 49  67  69
    var l = {}
    l[c_data] = a
    var data = n_n((l = {}, l[c_data] = a, l))
    // console.log(data)
    // console.log(data.payload.items[0])
    var d_temp = data.payload.items
    var ret_val = JSON.stringify(d_temp)
    return ret_val
}

function get_page(arg){
    console.log(arg)
    return decrypt(arg)
}

module.exports = {
    get_page
}

spider_server.js

var express = require('express');
var douban = require('./douban');
var app = express();
const multipart = require('connect-multiparty')
const multipartyMiddleware = multipart()

app.post('/db', multipartyMiddleware, (req, res) => {
    console.log(req)
    var result = douban.get_page(req.body.p1)
    res.send(result)
})


app.listen(23341, function () {
})

在这里插入图片描述

全部代码放在Blog中
console.log("全部代码放在公众号和Blog中")
console.log("公众号:虫术")
console.log("关注回复:doub")
Blog:http://404nofoundx.top/

http://www.niftyadmin.cn/n/997389.html

相关文章

apache启动脚本

apache启动的时候,后面是空白,不会显示OK,将本文的内容替换覆盖就OK了#!/bin/bash## Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this …

Python调用原生javascript两种方式

一、接口调用 node_server.js var express require(express); var douban require(./test); var app express(); const multipart require(connect-multiparty) const multipartyMiddleware multipart()app.post(/test, multipartyMiddleware, (req, res) > {var res…

html5之新增的API(online/offline/文件读取readFile/地理定位geolocation/web存储localStorage,sessionStorage)...

2019独角兽企业重金招聘Python工程师标准>>> 好了,总结一下HTML5提升部分的一些新增的API吧! 网络状态 属性:window.onLine用户当前的网络状况,返回一个布尔值。事件: window.online用户网络连接时被调用wi…

【自动部署该怎么做?】

剖析AWS CodeDeploy 作者 刘涛 发布于 2015年5月13日 | 注意:GTLC全球技术领导力峰会,500CTO技聚重新定义技术领导力!讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享稍后阅读我的阅读清单2014年底,AWS在“re:invent”大会…

.NET Core R2安装及示例教程

.NET Core R2安装及示例教程 Install for Windows - Visual Studio 2015 1Download Visual Studio 2015 Make sure you have Visual Studio 2015 Update 3 installed. Download Visual Studio 2015 with Update 3 Or just download Visual Studio 2015 Update 3 if you already…

***测试中如何提取Windows系统帐户密码

『面向对象』本篇博文主要面向信息安全***测试初级人员以及信息安全***技术爱好者,大牛请珍惜生命、自行绕道。『主要内容』主要介绍在后***测试阶段如何利用工具来获取Windows操作系统账号密码。---------------------------------------菜鸟起飞系列-------------…

Java中的垃圾回收原理

用户程序(mutator)会修改还堆区中的对象集合,从存储管理器处获取空间,创建对象,还可一引入和消除对已有对象的引用。 当mutator不能“达到”某些对象的时候,这些对象就成了垃圾。 目的:找到不可…

Java学习笔记之线程

2019独角兽企业重金招聘Python工程师标准>>> Java学习笔记之线程 线程的定义 线程有两种定义方法:一是继承Thread类;二是实现Runabble接口。 继承Thread类定义线程 在Thread类中有一个run方法,定义的线程需要重写这个方法。在重写…