文章目录

  • 声明
  • 目标网站
  • 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 execjsheaders = {'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题

前程无忧guid、acw_sc__v2相关推荐

  1. 前程无忧,acw_sc__v2

    文章目录 1.前言 2.不带cookie请求 3.acw_sc__v2生成研究 4.编码格式 声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 1.前言 网址:aH ...

  2. “前程无忧”招聘数据爬虫——(1)

    毕业设计第一弹 "前程无忧"招聘数据爬虫 操作系统: Win 10 爬取工具: Jupyter Notebook (Anaconda) 存储路径: 电脑D盘,csv格式 文件名: ...

  3. 前程无忧网站,职位信息一步到位函数爬取!!!真一步到位

    前程无忧网站,职位信息一步到位函数爬取!!!真一步到位 又到了毕业季了,阿巴阿巴阿巴.那么对于自己何去何从有什么好的规划呢?不如爬取点职位的数据来分析分析吧,纵观各大网站,要么就是数据少,要么就是很难 ...

  4. 爬取前程无忧网站数据

    1.爬取中华英才网,前程无忧网站的数据. spiders下: # -*- coding: utf-8 -*- import scrapy,copy from ..items import QcwyIt ...

  5. python爬取前程无忧scrapy存mogondb案例

    一.分析网页 新:python爬取前程无忧scrapy存mogondb案例+可视化 原网页直达 1.比如java字段,可以先拿到全部的el获取java字段的href,然后在逐个访问进入详情页 2.编写 ...

  6. 0基础爬虫前程无忧招聘信息

    安装 首先,我们需要安装pycharm和mysql 官网链接:https://www.jetbrains.com/pycharm/,https://www.mysql.com/ 1.连接数据库 目录 ...

  7. 入门小远学爬虫(二)(四)简单GET型网页爬虫实战——“前程无忧”爬虫岗位信息的爬取之正则概念以及Python中re库的简单应用

    文章目录 前言 一.正则表达式是什么? 二.正则表达式语法 1.简介 2.干货分享 三.re库 1.安装 2.用法 四.终于进入正题 小结 前言 这是本系列第一个实战项目的第四课,有关前三课相关的内容 ...

  8. python爬取前程无忧当日的全部招聘信息

    用了几天时间写成的爬取前程无忧的当日的招聘信息,通过多线程的方式同时爬取多个城市的信息,作为资料保存下来,一下是完整代码,可以直接复制粘贴爬取 这里爬取的数据条件是是24小时内,周末双休的,会在当前文 ...

  9. 阿里系cookie之acw_sc__v2 逆向分析

    文章目录 声明 案例地址 目标参数 加密流程与逆向分析 js代码 python调用测试 声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请 ...

最新文章

  1. Android Service
  2. 快来支招~程序员怎么哄女朋友? | 每日趣闻
  3. Linux 库函数与系统调用的关系与区别
  4. redis安装及用Redis Desktop Manager连接Redis
  5. Postgresql 直接在查询结果中生成唯一ID
  6. 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
  7. UISearchBar 点击取消回到原来位置时会跳动的解决方法
  8. 微型计算机乘法部件位于,组成原理复习题8.doc
  9. 计算机硕士系统毕业论文答辩ppt,计算机硕士论文答辩ppt
  10. kafka集群搭建超详细教程
  11. 在Visio中如何绘制直线
  12. C语言数字转扑克牌字符,C语言编程:扑克牌魔术
  13. 一种简单的PCB加温电路设计
  14. 实时数据库简介和比较
  15. 初创公司股权结构应该怎么设计?举例三种模型
  16. 软考笔记——5.2网络安全技术
  17. C++使用模板类实现简单的人事管理系统
  18. powerlink的Windows-DEMO生成笔记
  19. 软件工程第5次作业(第2次结对作业)——驾驶员与领航员
  20. Mac安装鸿蒙系统,搭建MAC系统下的Wi-Fi loT Hi3861鸿蒙开发环境

热门文章

  1. 服装店收银管理系统如何选择?
  2. Matlab最小二乘法:线性最小二乘、加权线性最小二乘、稳健最小二乘、非线性最小二乘与剔除异常值效果比较
  3. 云客Drupal源码分析之表单进阶
  4. 用python刷微信阅读_老司机用python脚本刷微信读书的时长
  5. Android : Camera之camx hal架构
  6. [在国网某单位的工作日常]第一周
  7. iOS逆向工程Mac工具篇
  8. 黄河旋风你敢去吗?《材料的、找工作的》必看,求置顶啊
  9. 华为手机电池存在大量虚电?教你一个方法,去除虚电增加手机续航
  10. 动态生成html点击事件无效,动态生成的DOM不会触发onclick事件的原因及解决方法...