美文网首页
获取动态token_参数关联登录拉勾网

获取动态token_参数关联登录拉勾网

作者: Root_123 | 来源:发表于2018-10-12 10:12 被阅读53次
    # coding:utf-8
    '''
    接口----
    获取动态token
    参数关联登录(登录拉勾网)
    '''
    import requests
    import re
    from bs4 import BeautifulSoup
    import urllib3
    import hashlib
    urllib3.disable_warnings()
    
    
    class LoginLgw():
    
        def __init__(self, s):
            self.s = s
    
        def getTokenCode(self):
            url = 'https://passport.lagou.com/login/login.html'
            h = {
                 "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
                }
            # 更新session的headers
            self.s.headers.update(h)
            data = self.s.get(url, verify=False)
            soup = BeautifulSoup(data.content, "html.parser", from_encoding='utf-8')
            tokenCode = {}
            try:
                t = soup.find_all('script')[1].get_text() #获取第二个script标签
                print(t)
                tokenCode['X_Anti_Forge_Token'] = re.findall(r"Token = '(.+?)'", t)[0]
                tokenCode['X_Anti_Forge_Code'] = re.findall(r"Code = '(.+?)'", t)[0]
                return tokenCode
            except:
                print("获取token和code失败")
                tokenCode['X_Anti_Forge_Token'] = ""
                tokenCode['X_Anti_Forge_Code'] = ""
                return tokenCode
    
        def encryptPwd(self,passwd):
            # 对密码进行了md5双重加密
            passwd = hashlib.md5(passwd.encode('utf-8')).hexdigest()
            # veennike 这个值是在登录页面源码里的js文件找到的一个写死的值
            passwd = 'veenike' + passwd + 'veenike'
            passwd = hashlib.md5(passwd.encode('utf-8')).hexdigest()
            return passwd
    
        def login(self, user, psw):
            '''
            function:登录拉勾网网站
            :param user: 账号
            :param psw: 密码
            :return: 返回json
            '''
            gtoken = self.getTokenCode()
            print(gtoken)
            print(gtoken['X_Anti_Forge_Token'])
            print(gtoken['X_Anti_Forge_Code'])
            url2 = 'https://passport.lagou.com/login/login.json'
            h2 = {
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
            "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
            "X-Requested-With": "XMLHttpRequest",
            "X-Anit-Forge-Token": gtoken['X_Anti_Forge_Token'],
            "X-Anit-Forge-Code": gtoken['X_Anti_Forge_Code'],
            "Referer": "https://passport.lagou.com/login/login.html",
            }
    
            self.s.headers.update(h2)
            passwd = self.encryptPwd(psw)
    
            body = {
                    "isValidate":'true',
                    "username": user,
                    "password": passwd,
                    "request_form_verifyCode": "",
                    "submit": ""
                    }
            r2 = self.s.post(url2 , data=body, verify=False)
            try:
                print(r2.text)
                return r2.json()
            except:
                print("登录异常信息:%s" % r2.text)
                return None
    
    if __name__ == "__main__":
        s = requests.session()
        lgw = LoginLgw(s)
        lgw.login("181545642084", "xmxxxxx6.")
    

    相关文章

      网友评论

          本文标题:获取动态token_参数关联登录拉勾网

          本文链接:https://www.haomeiwen.com/subject/xxuwaftx.html