python360指数_python登录好搜360api接口遇到的坑

好搜的登录过程和搜狗,神马和百度是完全不一样的。因为他的token是动态的。要10小时重新获取一次,这次的坑也就是卡在获取token的过程中。

主要是下面这个事情:

身份认证

申请通过后,调用api接口首先需要登录,登录分为客户登录和客服登录,请求相应接口,提供360账户名和加密后的密码,系统返回可用的AccessToken,密码加密方式如下:

1) 使用MD5对原始密码进行加密,加密结果为32位数字和小写字母;

2) 再用AES对称加密(AES模式为CBC,加密算法MCRYPT_RIJNDAEL_128)对MD5加密后的密码实现对称加密。秘钥是apiSecret 的前16位,向量是后16位,加密结果为64位数字和小写字母;

非常好理解,所以我已开始是直接找了在线aes加密的方式来使用。但是所有在线aes加密工具生成的结果都是提示错误。后来我才注意到因为他们的结果都是base64格式的,完全不符合只有数字和小写字母这样的要求。经查资料后,才知道是要用bin2hex 这样的方式来转换

然后参考了这两篇文章

https://blog.csdn.net/qq_34625397/article/details/97113019

https://blog.csdn.net/weixin_44336969/article/details/103491582

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

from Crypto.Cipher import AES

import base64

from binascii import b2a_hex

def create_md5_pwd(password):

m = hashlib.md5()

b = password.encode(encoding='utf-8')

m.update(b)

md5_pwd = m.hexdigest()

return md5_pwd

class PrpCrypt(object):

def __init__(self, API_SECRET):

self.key = API_SECRET[:16].encode('gbk')  # 密匙

self.iv = API_SECRET[16:].encode('gbk')  # 密匙向量

def encrypt(self,text):

# 加密

mycipher = AES.new(self.key, AES.MODE_CBC, self.iv)

# 加密的明文长度必须为16的倍数,如果长度不为16的倍数,则需要补足为16的倍数

# 将iv(密钥向量)加到加密的密文开头,一起传输

ciphertext = self.iv + mycipher.encrypt(text.encode())

return ciphertext  # 加密

def decrypt(self,text):

# 解密

mydecrypt = AES.new(self.key, AES.MODE_CBC, text[:16])

decrypttext = mydecrypt.decrypt(text[16:])

decrypt_pwd = decrypttext.decode()  # 解密后数据

return decrypt_pwd

if __name__ == '__main__':

password = 'test'

API_SECRET = "12345678912345678912345678912345"  # 点睛提供

text = create_md5_pwd(password)

pc = PrpCrypt(API_SECRET)  # 初始化密匙

ciphertext = pc.encrypt(text)

e = b2a_hex(ciphertext)[32:].decode()

d = pc.decrypt(ciphertext)

print('加密后:' + e)

print('解密后:' + d)

————————————————

版权声明:本文为CSDN博主「'ゞBibo。」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_44336969/article/details/103491582

分享到:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值