首页 编程教程正文

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

piaodoo 编程教程 2020-02-22 22:03:06 868 0 python教程

本文来源吾爱破解论坛

本帖最后由 wushaominkk 于 2019-6-6 21:07 编辑
python模拟登录猎聘 好久没写python相关的教程了,这次给大家带来的是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('用户名', '密码')
思路 分析请求,会发现第一个请求会返回来token和加密的js,用于第二个请求,计算value值,密码采用md5加密,然后构造请求,最后拿到返回结果 谢谢大家

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7435.html

搜索