DecryptLogin:python模拟登陆模块
DecryptLogin一个利用requests来模拟登录各大网站的开源包。()它支持多个平台的模拟登陆。
一、简单登陆
infos_return:返回一个字典对象,包含用户信息 session:会话对象 所有网站接口都包含以下参数: username: 登录用户名 password: 登录密码 mode:移动端:mobile’和PC端:mode=‘pc’ crackvcFunc: 支持用户自定义一个验证码识别函数, 该函数传入验证码图片路径, 并返回识别结果 proxies: 模拟登录的过程中使用指定的代理服务器, 代理支持的格式同: https://requests.readthedocs.io/en/master/user/advanced/#proxies
二、验证码处理
需要用到python图像处理库——PIL 并定义验证码识别函数。
def crackvcFunc(imagepath): # 打开验证码图片 img = Image.open(imagepath) # 识别验证码图片 result = IdentifyAPI(img) # 返回识别结果 return result
其中IdentifyAPI可选择识别验证码的接口,我选用的是百度ai通用文字识别的接口,,修改后的代码如下:
def get_access_token(client_id,client_secret): host = https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=+ client_id + &client_secret= + client_secret response = requests.get(host) res = response.json() if response: return res[access_token] def crackvcFunc(imagepath): request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic" # 二进制方式打开图片文件 f = open(imagepath, rb) img = base64.b64encode(f.read()) params = { "image":img} access_token = get_access_token(client_id,client_secret) request_url = request_url + "?access_token=" + access_token headers = { content-type: application/x-www-form-urlencoded} response = requests.post(request_url, data=params, headers=headers) if response: res = response.json() return res[words_result][0][words]
登陆成功
[INFO]: Account -> 18**********5, login successfully... [Finished in 5.1s]
三、添加代理
proxies = { https: 127.0.0.1:1080} infos_return, session = lg.zhihu(username=Your Username, password=Your Password, proxies=proxies)
四、保存cookies
为安全起见, DecryptLogin不考虑提供自动保存cookies并每次验证其是否已经过期的功能。
from DecryptLogin.utils.cookies import * def save_cookies(url, cookiespath): session = requests.Session() for i in url: session.get(i) saveSessionCookies(session=session, cookiespath=cookiespath)
五、载入cookies
def load_cookies(cookiespath): session = requests.Session() infos_return, session = loadSessionCookies(session=session, cookiespath=cookiespath) return infos_return, session
最后主函数:
def main(): lg = login.Login()#登陆 client_id = GoH*******CtNy #验证码识别API接口id client_secret = xCgB*********cytKDCK #验证码识别API接口密码 cookiespath = c:/****#cookies保存路径 username = username password = password infos_return, session = lg.weibo(username, password, pc) #登陆 save_cookies(infos_return[crossDomainUrlList], cookiespath) infos_return, session = load_cookies(cookiespath)