工作都快一周了 ,一直想升级,怎奈小伙子都还没从暑假的开心中缓回来,今日总算耐下心来升级一小篇 。抠一下某可能会的JS编码 ,然后应用抠取的JS编码数据加密登陆密码开展登陆。温馨提示:为防止多余的纠纷案件,文中中全部网站地址都开展了一定掩藏。

很多人学习培训python,不清楚从何学习 。
很多人学习培训python ,把握了基础英语的语法之后,不清楚在哪儿找寻实例入门。
许多 早已做实例的人,却不清楚如何去学习培训更为深奥的专业知识。
那麼对于这三类人 ,我给大伙儿出示一个好的在线学习平台 ,免费领教程视频,电子书,及其课程内容的源码!??¤
QQ群:961562169

总体目标

题目早已表明了文中的目地:

  1. 登陆密码加密解密;
  2. 运用第一步加密方法数据加密后开展登陆;
  3. 详细编码中试着了多账户号大批量登陆(因为篇数比较有限 ,挪动来到 阅读 中);

抠出来编码

寻找总体目标网址,进到登陆页面(对诸位而言都很easy):

像过去一样键入不正确的账户密码,看一下递交的数据信息 ,点一下登陆后,递交账户密码 url 以下:

继续看 FormData ,如下图:

图上的 loginName 给你键入的登录名, password 为登陆密码 ,能够看得出被数据加密了,假如你了解了各种JS加密算法,内心应当能大约明确这就是 MD5 数据加密結果 。临时无需管其他的四个主要参数 ,接下去只不过便是把数据加密JS编码抠出,能够根据启用栈进来,还可以全局搜索 password 来精准定位JS文档 ,实际应用哪样方式全看诸位朋友的爱好了 ,我这里是以启用栈进来的(即然我们都是在登陆,那么就点含有 login 字眼的js文件进来好啦):

进去后你能搜一下 password 关键词,应当立刻就能精准定位到要想的部位 ,精准定位的情况下别忘记挂上一个中断点,如同下面的图一样:

一看加密方法名便是了解的 MD5 ,接下去的实际操作应当更为了解了 ,激话中断点(键入账户密码,点一下登陆,前提条件就是你挂到了中断点)。

点一下后就进入了加密方法里:

function md5(string, key, raw) { if (!key) { if (!raw) return hex_md5(string); return raw_md5(string) } if (!raw) return hex_hmac_md5(key, string); return raw_hmac_md5(key, string) }

能够看得出md5方式一共有三个主要参数 ,第一个 striing 即是登陆密码, key 和 raw 是 undefined。接下来笨一点的方法便是一步一步运作,把自动跳转的全部编码都扣下来 ,如果是刚开始学习抠编码,这一方式能提升许多 调节 ”觉得”,渐渐地抠得愈来愈随手 。投机取巧一点的只不过便是寻找大括号:

一直往上寻找 ,应当立刻就能寻找正括弧:

那样里边的编码实际上便是此次要抠的编码 ,可是要应用 python 启用,也要开展一点修改 。此次要抠的数据加密编码其实不是很难,终究仅仅 md5 。历经略微改变后 ,大家试着应用python里 execjs 库实行:

取得成功运作出結果,抠取结束。

登陆

FormData

根据上一节,大家早已能够获得数据加密后的登陆密码 ,即然要登陆,那就需要返回 FormData 中,看一下好多个主要参数的含意与赋值 ,历经一番检测,小结以下,很感兴趣的还可以自身去试一下 。

主要参数 赋值
loginName 登录名
password 数据加密后的登陆密码
remUser 是不是记住用户名(0或是1)
whereFrom 能为空
captchaId 短信验证码(能为空)
captchaTicket 能为空

Cookies

如今的登陆都必须带上 cookies ,看一下本网站登陆情况下的Cookies:

看上去许多  ,可是历经检测并不一定所有带上,cookies应该是服务器端造成的,因此 還是踏踏实实携带吧 ,沒有近道。历经粗略地检测 ,带上下列好多个就可以登陆:

cookies = { ' mars_pid': '你的', ' cps': '你的', ' mars_sid': '你的', 'times_XXXXX': '你的', ' VipRUID': '你的', ' VipRNAME': '', ' VipDegree': '你的', ' user_class': '你的', ' VipCI_te': '你的', 'mars_cid': '你的' }

有兴趣爱好的能够再次试一下这里边还有没有能够无需带上的。

Header

无论是登陆還是抓取某一网页页面,请求头是肯定绕但是的,如今一起看一下本网站的请求头都有哪些:

好家伙 ,各种各样都是有,但是大伙儿不必担心,历经检测在文中具体抓取全过程中仅用带上 user-agent ,平常的抓取全过程中,一些很有可能会查验上一个网页页面是在哪儿,即要带上 referer ,也有 origin 和 host 也是很有可能会带上的 。

宣布登陆

此次登陆的好多个关键点在前面应当算早已论述清晰了 ,如今要做的只不过便是把 FormData 里的数据信息 post 到 login_url 。

flowchat st=>start: 刚开始 e=>end: 完毕 op0=>operation: 键入账户密码 op1=>operation: 实行js代码数据加密登陆密码 op=>operation: 拼装formdata op2=>operation: 把formdata post到登陆url op3=>operation: 剖析回到 st->op0->op1->op->op2->op3->e

好啦,步骤知道刚开始敲代码,温馨提示: 因为很有可能造成一些多余的争夺 ,编码中的url和cookies值都掩藏了,大伙儿依照自身的加上就可以 。建立了一个 VipLogin 类,下边是一部分控制模块的编码 。

实行js代码

@property def exec_js(self): """ 你自己的js途径 :return: """ with open('..//js//weipinhui.js', encoding='utf-8') as f: weipinhui = f.read() js = execjs.compile(weipinhui) return js

数据加密登陆密码

def get_pwd(self,password): key = "" raw = "" pwd = self.js.call('md5', password, key, raw) logger.info("数据加密結果为:{}".format(pwd)) return pwd

登录名数据加密

def encrypt_phone(self,phone): return phone[:3] "*"*5 phone[-3:]

递交数据信息

def login(self,user,passwd): if not user.isdigit or len(user) != 11: logger.error("现阶段仅适用手机号码方法登陆:{}".format(user)) return False session = requests.Session() vip_name = self.encrypt_phone(user) times_key = "times_" user data = { "loginName": user, "password": passwd, "remUser": "0", "whereFrom":"", "captchaId":"" , "captchaTicket":"", } ck_dict = { ' mars_pid': '你的', ' cps': '你的', ' mars_sid': '你的', times_key: '你的', ' VipRUID': '你的', ' VipRNAME': vip_name, ' VipDegree': '你的', ' user_class': '你的', ' VipCI_te': '你的', 'mars_cid': '你的' } requests.utils.add_dict_to_cookiejar(session.cookies,ck_dict) resp = session.post(self.login_url,headers=self.headers,data=data,verify=False) ret = json.loads(resp.text) logger.info("账户{}回到結果为:{}".format(self._encrypt_phone(user),ret)) if ret.get("result","") == "success": return True return False

登陆結果

登录成功的标示为 'result': 'success ‘以下:

{ 'result': 'success', 'errorCode': 0, 'data': { 'redirectUrl': 'https://www.xxx.com', 'captchaFlowData': None, 'extend': None, 'bindMobile': True, 'illegalState': False }, 'redirectUrl': 'https://www.xxx.com' }
文章来源于网络 ,如有侵权请联系站长QQ61910465删除
本文版权归QU快排Www.seoGurubLog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ▲61910465