前言

登录网站的时候,经常会遇到传token参数,token关联并不难,难的是找出服务器第一次返回token的值所在的位置,取出来后就可以动态关联了

登录拉勾网

1.先找到登录首页https://passport.lagou.com/login/login.html,输入账号和密码登录,抓包看详情

找到token生成的位置

1.打开登录首页https://passport.lagou.com/login/login.html,直接按F5刷新(只做刷新动作,不输入账号和密码),然后从返回的页面找到token生成的位置

看注释内容:

</script>

    <!-- 页面样式 -->    <!-- 动态token,防御伪造请求,重复提交 -->
    <script>
    window.X_Anti_Forge_Token = '286fd3ae-ef82-4019-89c4-9408947a0e26';
    window.X_Anti_Forge_Code = '74603111';
</script>

前端的代码,注释内容暴露了token位置,嘿嘿!

2.接下来从返回的html里面解析出token和code两个参数的值

模拟登陆

1.登陆的时候这里密码参数虽然加密了,但是是固定的加密方式,所以直接复制抓包的加密后字符串就行了

参考代码:

#coding:utf-8
import requests
from bs4 import BeautifulSoup
import re

def login(s,gtoken,user,psw):
    '''
    s=requests.session()
    gtoken: getTokenCode返回值
    user:账户
    psw: 密码
    '''
    url2 = "https://passport.lagou.com/login/login.json"
    h2={
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0",
    "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
    "X-Requested-With": "XMLHttpRequest",
    "X-Anit-Forge-Token": gtoken['X-Anit-Forge-Token'],
    "X-Anit-Forge-Code": gtoken['X-Anit-Forge-Code'],
    "Referer": "https://passport.lagou.com/login/login.html"
    }
    s.headers.update(h2)

body={
        "isValidate":"true",
        "username":user,       #传入user参数
        "password":psw,    #传入psw参数
        "request_form_verifyCode":"",
        "submit":""
    }
    r2 = s.post(url2, data=body,verify=False)
    try:
        print(r2.text)
        return r2.json()
    except:
        print("登录异常信息为:%s" % r2.text)
        return None
    
def getTokenCode(s):
    url='https://passport.lagou.com/login/login.html'
    h={
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"
    }
    #更新session的
    s.headers.update(h)
    data=s.get(url,verify=False)
    soup=BeautifulSoup(data.content,"html.parser",from_encoding='uft-8')
    tokenCode={}
    try:
        t=soup.find_all('script')[1].get_text()   #找到我们需要的第2个script标签,并获取文本信息,返回一个字符串
        print(t)
        tokenCode['X-Anit-Forge-Token']=re.findall(r"Token = '(.+?)'",t)[0]
        tokenCode['X-Anit-Forge-Code']=re.findall(r"Code = '(.+?)'",t)[0]
        return tokenCode
    except:
        print("获取token和code失败")
        tokenCode['X-Anit-Forge-Token']=""
        tokenCode['X-Anit-Forge-Code']=""
        return tokenCode

if __name__=='__main__':
    s=requests.session()
    token = getTokenCode(s)
    login(s,token,"XX","d4fb38a060abe164f6e2e1a71473329d")

python接口自动化-token参数关联登录(登录拉勾网)的更多相关文章

  1. python接口自动化-token参数关联登录(二)

    原文地址https://www.cnblogs.com/yoyoketang/p/9098096.html 原文地址https://www.cnblogs.com/yoyoketang/p/68866 ...

  2. python接口自动化23-token参数关联登录(登录拉勾网)

    前言 登录网站的时候,经常会遇到传token参数,token关联并不难,难的是找出服务器第一次返回token的值所在的位置,取出来后就可以动态关联了 登录拉勾网 1.先找到登录首页https://pa ...

  3. python接口自动化(Cookie_绕过验证码登录)

     python接口自动化(Cookie_绕过验证码登录) 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以 ...

  4. python接口自动化7-参数关联

    前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 (博客园的登录机制已经变了,不能用账号和密码登录了 ...

  5. python接口自动化26-参数关联和JSESSIONID(上个接口返回数据作为下个接口请求参数)

    前言 参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了. 最常见的案例就是网站的登录案例,很多网站的登录并不仅 ...

  6. python接口自动化7-参数关联【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E ...

  7. Python接口自动化基础---session关联接口

    登录一个系统之后,如果需要在登录状态下进行一些操作,那么需要怎样保持会话呢? 可以使用Session() 举例如下: import requests s=requests.Session() url1 ...

  8. Python接口自动化--URL参数的编码和解码 6

    # _*_ coding:utf-8 _*_ #python2 import urllib #有时,需要从上一个请求的url获取参数,传到下一个请求中,中文会显示为编码的形式,这时候就需要进行解码 u ...

  9. python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

随机推荐

  1. 递推DP HDOJ 5459 Jesus Is Here

    题目传送门 题意:简单来说就是sn = sn-1 + sn-2递推而来,求其中所有c字符的:∑i<j:sn[i..i+2]=sn[j..j+2]=‘‘cff"(j−i) mod 530 ...

  2. curry柯里化函数实现

    curry柯里化函数实现 参考文章: 一行写出javascript函数式编程中的curry 感谢作者分享 第一步: 缓存原始函数的参数个数 function curry(fn) { var limit ...

  3. RHEL 6.5----heartbeat

    主机名 IP  所需软件  master 192.168.30.130  heartbeat.httpd node-1 192.168.30.131  nfs  node-2 192.168.30.1 ...

  4. Spark-SQL连接Hive

    第一步:修个Hive的配置文件hive-site.xml 添加如下属性,取消本地元数据服务: <property> <name>hive.metastore.local< ...

  5. PHP多图片上传类推荐

    多文件上传是PHP中的一个基础应用,反正PHPer都会遇到的问题,现在就介绍一个功能完善.强大的多文件上传类给大家吧,能用上这个类的地方会很多. <?php class Upload{ var ...

  6. 013、BOM对象的应用

    BOM结构图如下: DOM结构图如下: BOM和DOM BOM,Bowser Object Model浏览器对象模型.提供了访问和操作浏览器各组件的途径或方法. 比如:Navigator对象:浏览器的 ...

  7. re正则表达式讲解—初步认识

    # f = open(r"C:\Users\LENOVO\Desktop\模特.txt",'r') # 1.常规提取文档内容方法 # contacts = [] # for i i ...

  8. 如何在win7、win8、win8.1上安装使用vb6.0

    https://jingyan.baidu.com/article/915fc414fdf8fb51384b2062.html如何在win7.win8.win8.1上安装使用vb6.0 如何在win7 ...

  9. Performance testing architecture

    一张图胜过千言. 这个还只是目前阶段的架构,后期会在CI以及自动化驱动下形成具有管理功能的平台.

  10. 磁盘格式化mke2fs

    -b 设置每个块的大小,当前支持1024,2048,40963种字节 -i 给一个inode多少容量 -c 检查磁盘错误,仅执行一次-c时候,会进行快速读取测试:-c -c会测试读写,会很慢 -L 后 ...