前程无忧guid、acw_sc__v2

news2024/9/29 7:18:10

文章目录

  • 声明
  • 目标网站
  • acw_sc__v2分析
  • python调用测试
  • 话外拓展-风控浅析
  • 往期逆向文章推荐

声明

本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除!

目标网站

aHR0cHM6Ly93ZS41MWpvYi5jb20vcGMvc2VhcmNoP2tleXdvcmQ9amF2YSZzZWFyY2hUeXBlPTImc29ydFR5cGU9MCZtZXRybz0=

在这里插入图片描述

acw_sc__v2分析

看到了熟悉的acw_sc__v2,不熟悉的推荐之前写的两篇文章:

阿里系cookie之acw_sc__v2 逆向分析

雪球acw_sc__v2

不出意外第一次请求应该是设置acw_sc__v2
在这里插入图片描述
这个acw_sc__v2很多网站的算法都是通用的,我们可以直接用之前的代码,也可以自己跟跟看。

acw_sc__v2 生成js:

window = {};

var arg3 = null;
var arg4 = null;
var arg5 = null;
var arg6 = null;
var arg7 = null;
var arg8 = null;
var arg9 = null;
var arg10 = null;

var l = function (arg1) {
  while (window["_phantom"] || window["__phantomas"]) {}

  var _0x5e8b26 = "3000176000856006061501533003690027800375";

  String["prototype"]["hexXor"] = function (_0x4e08d8) {
    var _0x5a5d3b = "";

    for (var _0xe89588 = 0; _0xe89588 < this["length"] && _0xe89588 < _0x4e08d8["length"]; _0xe89588 += 2) {
      var _0x401af1 = parseInt(this["slice"](_0xe89588, _0xe89588 + 2), 16);

      var _0x105f59 = parseInt(_0x4e08d8["slice"](_0xe89588, _0xe89588 + 2), 16);

      var _0x189e2c = (_0x401af1 ^ _0x105f59)["toString"](16);

      if (_0x189e2c["length"] == 1) {
        _0x189e2c = "0" + _0x189e2c;
      }

      _0x5a5d3b += _0x189e2c;
    }

    return _0x5a5d3b;
  };

  String["prototype"]["unsbox"] = function () {
    var _0x4b082b = [15, 35, 29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, 27, 22, 23, 25, 13, 6, 11, 39, 18, 20, 8, 14, 21, 32, 26, 2, 30, 7, 4, 17, 5, 3, 28, 34, 37, 12, 36];
    var _0x4da0dc = [];
    var _0x12605e = "";

    for (var _0x20a7bf = 0; _0x20a7bf < this["length"]; _0x20a7bf++) {
      var _0x385ee3 = this[_0x20a7bf];

      for (var _0x217721 = 0; _0x217721 < _0x4b082b["length"]; _0x217721++) {
        if (_0x4b082b[_0x217721] == _0x20a7bf + 1) {
          _0x4da0dc[_0x217721] = _0x385ee3;
        }
      }
    }

    _0x12605e = _0x4da0dc["join"]("");
    return _0x12605e;
  };

  var _0x23a392 = arg1["unsbox"]();

  arg2 = _0x23a392["hexXor"](_0x5e8b26);
  console.log('arg2==>',arg2)
  // setTimeout("reload(arg2)", 2);
    return arg2
};
// var arg1 = "FAA6CB46CF724D58FF82E5310687947623413114";
// l(arg1)

python调用测试

# -*- coding: UTF-8 -*-
import time
import uuid
import requests
import re
import json
import execjs


headers = {
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'zh',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'From-Domain': '51job_web',
    'Pragma': 'no-cache',
    'Referer': 'https://we.51job.com/pc/search?keyword=java&searchType=2&sortType=0&metro=',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
    'account-id': '',
    'partner': '',
    'property': '%7B%22partner%22%3A%22%22%2C%22webId%22%3A2%2C%22fromdomain%22%3A%2251job_web%22%2C%22frompageUrl%22%3A%22https%3A%2F%2Fwe.51job.com%2F%22%2C%22pageUrl%22%3A%22https%3A%2F%2Fwe.51job.com%2Fpc%2Fsearch%3Fkeyword%3Djava%26searchType%3D2%26sortType%3D0%26metro%3D%22%2C%22identityType%22%3A%22%22%2C%22userType%22%3A%22%22%2C%22isLogin%22%3A%22%E5%90%A6%22%2C%22accountid%22%3A%22%22%7D',
    'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sign': '839932c059141791d8a003f0e6652e14facbf788a502df374fecf9c107d93b9e',
    'user-token': '',
    'uuid': '1687228791235576552',
}
params = {
    'api_key': '51job',
    'timestamp': '1687228791',
    'keyword': 'java',
    'searchType': '2',
    'function': '',
    'industry': '',
    'jobArea': '000000',
    'jobArea2': '',
    'landmark': '',
    'metro': '',
    'salary': '',
    'workYear': '',
    'degree': '',
    'companyType': '',
    'companySize': '',
    'jobType': '',
    'issueDate': '',
    'sortType': '0',
    'pageNum': '1',
    'requestId': '',
    'pageSize': '20',
    'source': '1',
    'accountId': '',
    'pageCode': 'sou|sou|soulb',
}

# 换成自己的代理,或者不用,单个ip应该有限制
proxies = {
    "http":"http://xxx",
    "https":"http://xxxx"
}


for i in range(1,3):
    try:
        # cookie = {'guid': 'd02dfbabd84858301947663946e1710f'}
        session = requests.session()
        print("第%s次请求:" % i)
        response = session.get('https://we.51job.com/api/job/search-pc', params=params,proxies=proxies,headers=headers)
        print(response.text[:300])
        arg1 = re.findall("arg1='(.*?)';",response.text,re.S)[0]
        print('arg1--->',arg1)
        guid = str(uuid.uuid4()).replace("-", "")
        cookie = {'guid': str(guid)}

        with open('04.js', 'r', encoding='utf-8') as f:
            js = f.read()
        acw_sc__v2 = execjs.compile(js).call('l', arg1)
        print('acw_sc__v2-->',acw_sc__v2)
        cookie.update({"acw_sc__v2": acw_sc__v2})
        # cookie.update({"acw_sc__v3": "649257ebe376df87b3db6a94c1e5ad37f42f783b"})
        response2 = session.get('https://we.51job.com/api/job/search-pc', params=params,headers=headers,proxies=proxies,cookies=cookie) #
        cookie.update(response2.cookies.get_dict())

        response = session.get('https://we.51job.com/api/job/search-pc', params=params,headers=headers,proxies=proxies, cookies=cookie)
        print(response.text)
        time.sleep(0.5)
    except Exception as e:
        print(e)



测试结果:
在这里插入图片描述

话外拓展-风控浅析

测了一下风控,单个ip用acw_sc__v2请求多了会出滑块验证
在这里插入图片描述

过掉滑块,生成acw_sc__v3, cookie携带acw_sc__v3参数请求,使用单个ip

在这里插入图片描述
请求1000次还是成功的,再启动一下爬虫就是405响应:
在这里插入图片描述
再打开浏览器刷新就是这样:
在这里插入图片描述

这种情况就是ip被封掉了,浏览器再切换一下ip
在这里插入图片描述
又能正常访问了,确定是ip被限制了。

结论:请求量大的还是堆ip吧【狗头保命】

往期逆向文章推荐

B站w_rid逆向

某书最新版X-s(2023/5/23更新)

JS逆向之今日头条signature

JS逆向之抖音__ac_signature

JS逆向之淘宝sign

JS逆向之知乎jsvmp算法

JS逆向之艺恩数据

JS逆向之网易云音乐

JS逆向之巨量星图sign签名

JS逆向之巨量创意signature签名

JS逆向之巨量算数signature与data解密

JS逆向之行行查data解密

JS逆向之百度翻译

JS逆向解析之有道翻译

JS逆向之企名科技

JS逆向之人口流动态势

JS逆向系列之猿人学爬虫第1题

JS逆向系列之猿人学爬虫第2题

JS逆向系列之猿人学爬虫第3题

JS逆向系列之猿人学爬虫第4题

JS逆向系列之猿人学爬虫第5题

JS逆向系列之猿人学爬虫第6题

JS逆向系列之猿人学爬虫第7题-动态字体,随风漂移

JS逆向系列之猿人学爬虫第12题

JS逆向系列之猿人学爬虫第13题

JS逆向系列之猿人学爬虫第15题-备周则意怠,常见则不疑

JS逆向系列之猿人学爬虫第17题

JS逆向之猿人学爬虫第19题-乌拉

JS逆向之网洛者反爬虫练习平台第4题

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

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

相关文章

【测试】Selenium操作Cookie

1.操作Cookie 操作Cookie无非就是读取和删除Cookie&#xff0c;下面这些是主要方法 from selenium.webdriver import Chrome, ChromeOptions from selenium.webdriver.chrome.service import Serviceoptions ChromeOptions() options.add_argument("--ignore-certifica…

07-source-map

source-map是从已转换的代码&#xff0c;映射到原始的源文件。使浏览器可以重构原始源并在调试器中显示重建的原始源。 根据源文件&#xff0c;生成source-map文件&#xff0c;webpack在打包时&#xff0c;可以通过配置生成source-map&#xff1b; 在转换后的代码&#xff0c;…

Springboot整合mybatisplus实战

Springboot整合mybatisplus&#xff0c;纯后端&#xff0c;验证结果是通过postman调用的&#xff0c;记录一下 1、建表语句以及初始化数据脚本 CREATE TABLE tbl_book (id int NOT NULL AUTO_INCREMENT,type varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT…

Django之模板层

一、模板简介 在刚刚介绍完的视图层中我们提到&#xff0c;浏览器发送的请求信息会转发给视图进行处理&#xff0c;而视图在经过一系列处理后必须要有返回信息给浏览器。如果我们要返回html标签、css等数据给浏览器进行渲染&#xff0c;我们可以在视图中这么做 from django.s…

Git进阶系列 | 3. 基于Pull Request实现更好的协作

Git是最流行的代码版本控制系统&#xff0c;这一系列文章介绍了一些Git的高阶使用方式&#xff0c;从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章&#xff0c;这是第3篇。原文&#xff1a;Better Collaboration With Pull Requests[1] 本文是“Git进阶系列”的第三篇…

Keil 重定向 fputc 函数 以及 printf 函数的代码尺寸测试

本文的开发环境为 Keil Cortex-M3 内核处理器。 重定向 fputc 函数方法 如果想使用库函数 printf &#xff0c;必须要将 fputc 重定向到自己的串口上。 术语 重定向 可以理解为用户重写 fputc 函数&#xff0c;在重写的函数体内调用自己硬件的串口发送函数。 在 Keil 环境中…

Android Binder通信原理(二):servicemanager启动

源码基于&#xff1a;Android R 0. 前言 下图是android 8.0 之前binder 的软件框架&#xff0c;依赖的驱动设备是/dev/binder&#xff0c;binder机制的四要素分别是client、server、servicemanager和binder驱动。 对于android 8.0后的binder 和vndbinder依然同这个框架&#…

【Python版】手把手带你如何进行Mock测试

什么是mock&#xff1f; mock测试是以可控的方式模拟真实的对象行为。程序员通常创造模拟对象来测试对象本身该具备的行为&#xff0c;很类似汽车设计者使用碰撞测试假人来模拟车辆碰撞中人的动态行为 为什么要使用Mock&#xff1f; 之所以使用mock测试&#xff0c;是因为真…

js+html+css 封装一个弹窗组件

HTML中通过一个按钮触发显示弹窗的函数showPopup()&#xff0c;弹窗的内容包含在一个div元素中&#xff0c;初始设置为隐藏状态。 CSS中定义了弹窗的样式&#xff0c;包括背景、位置、边框等。 JavaScript中定义了两个函数showPopup()和hidePopup()&#xff0c;分别用于显示和隐…

CORS原理及解决办法

浏览器的同源策略阻止读取来自不同来源的资源。这种机制阻止恶意站点读取另一个站点的数据&#xff0c;但它也阻止合法使用。 一般情况下&#xff0c;我们可以通过两种方式解决浏览器的同源策略&#xff0c;JSONP和CORS,CORS解决方案更为通用&#xff08;推荐&#xff09;。 …

算法程序设计 之 胖男孩问题(7/8)

一、题目分析 问题描述 麦克结婚后&#xff0c;在上个月他胖了70磅。因为手指上的脂肪过多&#xff0c;使他连给他最亲密的朋友斯拉夫克写一个电子邮件都很困难。 每晚麦克都详细地描述那一天他所吃的所有东西&#xff0c;但有时当他只想按一次某键时往往会按了不止一次&…

java 读取图片中的文字

Maven依赖导入Tess4j <!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j --><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.5.4</version></de…

基于SpringBoot的二手书交易系统的设计与实现(源码、数据库、文档)

作为新兴事物&#xff0c;校园电子商务是&#xff0c;首先是指在校园范围内&#xff0c;其技术手段是校园网&#xff0c;而服务对象是全部师生。主要经营形式为学生自主经营&#xff0c;能够满足多群体生活学习需求&#xff0c;同时具备范围小&#xff0c;安全性高&#xff0c;…

《Web应用技术》期末复习(END)

说明&#xff1a;不知道是哪位兄台在群里说了一句&#xff0c;整的我压力山大。这是我个人的期末复习梳理&#xff0c;自己使用并且提供给几位有需要的朋友使用&#xff0c;并不确定期末考试考不考这些。请大家视情况查看和使用&#xff0c;如果有错误&#xff0c;也欢迎大家找…

opencv如何使用GPU的三种方法

我在工作实验涉及到图像和视频处理时&#xff0c;通常使用opencv提供的库来做处理&#xff0c;虽然OpenCV是一个广泛使用的库&#xff0c;它提供了丰富的功能和工具。然而&#xff0c;有时候在处理大量图片或视频时&#xff0c;我们可能会面临速度受限的问题。 opencv执行图像…

SpringMvc拦截器入门

文章目录 前言五、拦截器入门1.拦截器简介2.拦截器入门案例3.拦截器参数4. 拦截器链配置 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能帮到一些萌新进行新技术的学习那也是极好的。作者…

管理Linux目录、用户、组以及文档的权限和归属

文章目录 一、管理Linux目录和文件1、查看及切换目录pwd&#xff1a;查看当前工作目录cd&#xff1a;切换工作目录ls&#xff1a;列出文档及属性alias&#xff1a;别名cat查看文件内容less分页显示长文件 2.新建目录/文件mkdir 创建目录touch创建文件 3.删除/移动/复制rm删除mv…

ai描述生成器绘画有哪些?ai绘画生成器描述介绍

从前&#xff0c;有一个名叫小华的画家&#xff0c;他是一位非常出色的艺术家&#xff0c;但是他总是感到自己还没有达到他理想中作品的水平。他一直在寻找一种方法来创造出高质量的艺术品。有一天&#xff0c;他听说了一种神奇的技术&#xff0c;可以让计算机通过人工智能生成…

MySQL全备+binlog恢复方法之伪装master

利用mysql全备 binlog server恢复方法之伪装master 单实例试验 一、试验环境 10.72.7.40 实例 mysql3306为要恢复的对象&#xff0c;mysql3306的全备binlog server&#xff08;目录/data/mysql/mysql3306/backup&#xff09; 实例mysql3307为伪装master 实例mysql3308为伪…

黑马程序员前端 Vue3 小兔鲜电商项目——(四)Home 页面布局

文章目录 Home 页面组件结构组件结构拆分Home 模块中引入组件 分类实现模板代码渲染数据 banner 轮播图实现模板代码封装接口渲染数据 面板组件封装创建公共组件复用抽取主题和副主题 新鲜好物实现模版代码封装接口渲染数据 人气推荐实现模板代码封装接口渲染数据 懒加载指令实…