利用python破解js加密模拟登录猎X网

这次给大家带来的是python模拟登录猎聘,主要用到的技术就是python模拟执行js,分析js请求,调用python库,执行js

原理

利用python的requests包模拟正常请求,拿到登录cookie,其中会遇到js加密解密

代码

# -*- coding: utf-8 -*-
# home.php?mod=space&uid=238618 : 2019/5/8 下午1:53
# home.php?mod=space&uid=686208 : xuzongyuan
# home.php?mod=space&uid=406162 : guapier.github.io
# home.php?mod=space&uid=267492 : login.py
# @Software: PyCharm
# @Function: 模拟登录猎聘
import time
import requests
import execjs
import re
import json
import hashlib
headers = {
 'Referer': 'https://www.liepin.com/',
 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) '
 'Chrome/73.0.3683.103 Safari/537.36',
 'DNT': '1',
}
def loads_jsonp(_jsonp):
 """
 解析jsonp数据格式为json
 :return:
 """
 try:
 return json.loads(re.match(".*?({.*}).*", _jsonp, re.S).group(1))
 except:
 raise ValueError('Invalid Input')
def get_token(username):
 """
 获取用户token和加密js
 :param username: 用户名
 :return:
 """
 params = (
 ('sign', username),
 ('callback', 'jQuery171029989774566236793_' + timestamp),
 ('_', timestamp),
 )
 response = requests.get('https://passport.liepin.com/verificationcode/v1/js.json', headers=headers, params=params)
 print(response.text)
 return loads_jsonp(response.text)
def login(username, password):
 """
 登录
 :param username: 用户名
 :param password: 密码
 :return:
 """
 result = get_token(username)
 token = result.get('data').get('token')
 js = result.get('data').get('js')
 print(token, js, sep='\n')
 ctx = execjs.compile(js)
 value = ctx.call('encryptData', username)
 m = hashlib.md5()
 m.update(password.encode('utf-8'))
 params = (
 ('callback', 'jQuery17108618602708711502_'+timestamp),
 ('login', username),
 ('pwd', m.hexdigest()),
 ('token', token),
 ('value', value),
 ('url', ''),
 ('_bi_source', '0'),
 ('_bi_role', '0'),
 ('_', timestamp),
 )
 response = requests.get('https://passport.liepin.com/account/individual/v1/login.json', headers=headers,
 params=params)
 print(response.text)
if __name__ == '__main__':
 timestamp = str(int(time.time() * 1000))
 login('用户名', '密码')

对Python感兴趣或者是正在学习的小伙伴,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的!从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,教你如何实现边学习边用Python赚钱的学习方式。点击加入我们的 python学习者聚集地

思路

分析请求,会发现第一个请求会返回来token和加密的js,用于第二个请求,计算value值,密码采用md5加密,然后构造请求,最后拿到返回结果。

觉得文章还不错的话不妨收藏起来慢慢看,有任何建议或看法欢迎大家在评论区分享讨论!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值