浏览中获取验证码地址以及抓取重定向之前的接口

1、在验证码图片上右击鼠标复制图片地址 http://xxx.yanzhengma.com
2、1)在浏览中抓取受保护的数据-302重定向之前的url,需要勾选preserver log选项 2)form data:以字典形式编写
3、带有验证码登录:1)因为在登录之前向服务器发送了一个请求生成验证码的请求,服务器对验证码生成cookie目的是区分验证码唯一标识符,因为验证码是可以重复,因此,服务器会返回一个验证码的cookie,
登录请求+验证码cookie,才能登录成功
2)验证码请求:
http://xxx.yanzhengma.com= “http://xxx.yanzhengma.com”
rep = r.get(http://xxx.yanzhengma.com)
r_cookie = rep.cookies # 是字典格式,直接取个键值
注意:设置传入参数的code_cookies = {“laravel_session”:r_cookie[‘laravel_session’]}
登录请求中放入cookies,如下:
res = request.post(url = url ,data =data, cookies = code_cookies)
4、1)使用session对象的好处:session可以自动保存服务器产生的cookies信息,并且自动在下一条请求时附加
2)什么是session:一次会话(从客户端和服务器创建请求连接开始,客户端和服务器断开连接结束,即关闭浏览器)
3)使用方法:
session = requests.session() # 创建session对象
res = session.get(url)…session.post(url,data)等put、delete操作
4)在unitest登录的实践
import unittest
class Test_unittest(unittest.TestCase):
def setUp(self):
self.session = requests.session()
self.url_login = “http://xxx.login.com”
self.url_code = “http://xxx.url_code.com”

def tearDown(self):
    self.session.close()
def test_login_success(self):
    self.session.get(self.url_code)
    data = {"name":"admin",
            "password":"admin"}
    res = self.session.post(self.url_login,data = data)
    try:
        self.assertEqual("o",res.json()['code'])
    except AssertionError as e:
        print(e)

def test_login_password_error(self):
    self.session.get(self.url_code)
    data = {"name":"admin",
            "password":"000"}
    res = self.session.post(self.url_login,data = data)
    try:
        self.assertEqual("o",res.json()['code'])
    except AssertionError as e:
        print(e)
if __name__ == '__main__':
    unittest.main()    

猜你喜欢

转载自blog.csdn.net/qq_37405087/article/details/110086476