声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造成损失,和本博客无关

0x00 抓包分析

1.参数分析

参数 数据来源
password 登陆密码加密参数
callback 固定
fingerprint 未知
finger2 未知
token 未知
source 固定
path 固定
username 登陆账号

2. 找寻生成方式

1.密码




encryptString函数需要传递三个值:
n.timesign + encodeURIComponent(n.passwordInput) :n.timesign就是时间戳,n.passwordInput 就是密码
n.rsaExponentn.rsaModulus: 通过搜索到是从服务器返回的

2.fingerprint和finger2

多次尝试发现是固定值,可以写,加密参数是

3. Token

也是服务器返回

0x01 代码编写

import json
import reimport requests
import execjsclass ChinahrLogin:def __init__(self):self.username = 'username'self.password = 'password'self.index_url = 'https://passport.58.com/'self.login_url = 'https://passport.58.com/login/pc/dologin?'self.token_path = '/login/init?callback=jQuery111305697932980020528_1577152074902&_=1577152074906'self.data_path = '/frontend/data?callback=jQuery111305697932980020528_1577152074902&_=1577152074905'self.headers = {'authority': 'passport.58.com','method': 'GET','scheme': 'https','accept': '*/*','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9','referer': 'https://www.chinahr.com/home/bj/','sec-fetch-mode': 'no-cors','sec-fetch-site': 'cross-site','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',}def extract_result(self,html):information = re.search('data":(\{.*}),"msg',html).group(1)return json.loads(information)def getPwd(self):self.headers.update({'path': self.data_path})resp_data = requests.get(self.index_url + self.data_path, headers=self.headers)data = self.extract_result(resp_data.text)rsaModulus = data['rsaModulus']rsaExponent = data['rsaExponent']with open('./chinahr_login.js','r') as f:enc_pwd = execjs.compile(f.read()).call('getPwd',self.password,rsaModulus,rsaExponent)return enc_pwddef getToken(self):self.headers.update({'path':self.token_path})resp_token = requests.get(self.index_url+self.token_path,headers=self.headers)token = self.extract_result(resp_token.text)token = token['token']return tokendef run(self):enc_pwd = self.getPwd()token = self.getToken()login_formdata = {'password': enc_pwd,'isremember': '','callback': 'window.CL.AsyncModules.successFun','fingerprint': 'D44E43B69446C35066274E7EBDB46106BCA8636910C6DF11_010','finger2': 'zh-CN|24|1|4|1920_1080|1920_1040|-480|1|1|1|undefined|1|unknown|Win32|unknown|3|true|false|false|false|false|0_false_false|d41d8cd98f00b204e9800998ecf8427e|f7bc91acfdafdfa98b7636d86db4a2f4','token': token,'source': 'chinahrzp-pc','path': 'https://www.chinahr.com/','username': self.username,'passwordInputEmpty': '','passwordInput': '','validcode': '','vcodekey': '','btnSubmit': '登录中...',}login_headers = {'authority': 'passport.58.com','method': 'POST','path': '/login/pc/dologin?','scheme': 'https','accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9','cache-control': 'max-age=0','content-length': '843','content-type': 'application/x-www-form-urlencoded','cookie': 'id58=c5/nn14AhigxeOoisYiwAg==; ppStore_fingerprint=05E460B6111B487630F9712EF9C2CD8E1C69045443D3F578; finger_session=Dma1hHi8fsAznvuWGOXgZISdYYO3pF5M; PPU="UID=34226077324298&UN=%E6%9F%B4er061&TT=207a27e7b141b06f05e4d6bcca89fdc2&PBODY=AhnVDB9shOqYp853wLdecGLfWBnVKvcro7b-OkKZbNsVvXztlS6zgW2VEkH5-PVmC_y9LptBmQ_fdloJ3NZ_wZXgx4vwOG4gb5UCUS_deJ7prv2WW25_PUzIy475NtkRFHZpG4sp-LuYdqbkaH64ZO0rDAR2MDrCaX3DMPnYkUg&VER=1"; www58com="UserID=34226077324298&UserName=%E6%9F%B4er061"; 58cooper="userid=34226077324298&username=%E6%9F%B4er061"; 58uname=%E6%9F%B4er061; cloudpassport="TT=207a27e7b141b06f05e4d6bcca89fdc2&TS=1577155273369&PBODY=fzAhLxkAEs4D5z1lpxeaj6UhC1XyMO0hCbfLoSD67j0kqGCML3je4FGfRIsB1L-4Csn14KDAOLxuqDUcrSPubPKu2l9uX7NsgGozihCaSoGKxdPX9ckGQpqn9Fmy1jMoTfBPjHR-tSKgp6Gn6rnsnE-tSkw6aatSZou-jqVhb2Q&VER=1"; 58tj_uuid=b723c447-26d0-4d3f-9e4b-c0d3307d7c35; new_uv=1; utm_source=; spm=; init_refer=; als=0; new_session=0','origin': 'https://www.chinahr.com','referer': 'https://www.chinahr.com/home/bj/','sec-fetch-mode': 'nested-navigate','sec-fetch-site': 'cross-site','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',}resp_login = requests.post(self.login_url,headers=login_headers,data=login_formdata)if '"msg":"成功"' in resp_login.text:print('登陆成功')if __name__ == '__main__':ChinahrLogin().run()

0x02

以上就是全部
完整代码:招聘登陆js
顺便公众号求个关注

Python爬虫-中华英才网登陆JS加密登陆相关推荐

  1. Python爬虫神器pyppeteer,对 js 加密降维打击

    爬虫神器pyppeteer,对 js 加密降维打击 pyppeteer 是对无头浏览器  puppeteer 的 Python 封装.无头浏览器广泛用于自动化测试,同时也是一种很好地爬虫思路. 使用 ...

  2. 中华英才网登录js(简单)

    文章目录 1. 网址 2. 模拟登录 3. 全局搜索`password` 4. 自定义入口函数 5. 源码 1. 网址 http://www.chinahr.com/home/gz/ 2. 模拟登录 ...

  3. 编写python爬虫 获取中华英才网全网工资数据

    做数据分析 数据挖掘,第一步是获取数据,在这里,我们要分析现今全国各地各个职业的工资情况. 我们选择较为权威的'中华英才网',编写python爬虫获取该网站上的各个招聘信息说给出的工资,再取其行业工资 ...

  4. python爬虫高级知识兼实例汇总-中华英才网

    我的CSDN高级爬虫知识兼实例教程: 中华英才网爬虫程序解析(1)-基础的爬虫程序实现 中华英才网爬虫程序解析(2)-多线程threading模块 中华英才网爬虫程序(3)-queue和threadi ...

  5. 破解网易云js加密,爬虫获取网易云评论

    破解网易云js加密,爬虫获取网易云评论 抓包 这里是对网页版的网易云音乐进行抓包,分析网络请求,url https://music.163.com/#/song?id=36229055 然后可以发现 ...

  6. 中华英才网爬虫程序解析(1)-基础的爬虫程序实现

    欢迎来到爬虫高级兼实战教程,打开你的IDE,开始python之旅吧! 中华英才网爬虫 在讲完python爬虫基础知识后,我们开始进行实战,在实战中我们会借实例来讲解爬虫的高级知识,爬虫程序已经公布于 ...

  7. 中华英才网爬虫程序解析(4)-分布式爬虫redis

    欢迎来到爬虫高级兼实战教程,打开你的IDE,开始python之旅吧! redis数据库 redis也是一种数据库,我们用到他的一个数据类型,也就是list列表来进行我们的分布式爬虫,接下来截取部分代码 ...

  8. Python爬虫入门之淘宝JS逆向解析请求参数Sign加密(一)

    关于JS逆向,相信这是很多小伙伴学习爬虫的一个门槛之一,如果你是初学者入门,开发一款爬虫,要以思路为主,代码是其次的 这里所说的思路指两个方面,一,分析观察目标站点思路,二,代码开发思路,二者缺一不可 ...

  9. python爬虫爬取网易云音乐歌曲_Python网易云音乐爬虫进阶篇

    image.png 年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论,算是进阶版了- 思 ...

最新文章

  1. http://www.cnblogs.com/zuowj/p/5674615.html
  2. ​每日一皮:​你的Frozen Throne...
  3. c html canvas,HTML5 canvas
  4. redis的数据结构||1) 字符串类型2) 哈希类型3) 列表类型4) 集合类型 5) 有序集合类型详解
  5. java元婴期(26)----java进阶(mybatis(5)---spring和mybatis整合(重点)逆向工程(会用))
  6. 使用WebStor快速检查你组织网络中的所有网站相关安全技术
  7. Ubuntu21.04 Docker 安装
  8. 10年嵌入式工程师经验之谈:对于研发工作的感悟
  9. linux git指令不存在,一些常用的Git命令
  10. 2017-2018-1 20155327 《信息安全系统设计基础》第十一周学习总结
  11. java 反射 调用私有构造函数_使用反射调用私有方法
  12. 【Android】PA4D_CH6 使用Internat资源
  13. anaconda安装torch_零基础入门PyTorch:怎样用?有哪些优势?手把手带你安装配置...
  14. X86与ARM平台下的参数传递机制
  15. eclipse 运行hadoop wordcount
  16. linux mtr 安装,遇到网络问题?别慌!MTR来帮您
  17. Java SE Development Kit 9.0.4 的下载安装及配置
  18. Word中如何从中间的某一页开始编页码
  19. 员工管理系统数组版-建立普通员工、经理、董事长类
  20. 7-101 个位数统计分数 15作者 陈越单位 浙江大学

热门文章

  1. C语言新手记:数列分段
  2. DA接口测试工装研究
  3. 手机设计尺寸 - iPhone界面尺寸
  4. Build RESTful APIs with Spring MVC
  5. 项目管理和流程的拙见
  6. 软件架构-解密电商系统-互联网BAT商品详情缓存架构
  7. Vue.js 源码分析(五) 基础篇 方法 methods属性详解
  8. PHP的_FILE_用法
  9. archetype说明
  10. OpenCV从上到下的顺序查找轮廓