zoukankan      html  css  js  c++  java
  • 9. selenium+request方式的cookie绕过

    1. 首先确认POST请求的content-type类型

    2. 查看cookies数据

    3. 找到对应的headers数据

    4. 如果是application/json,传入的json数据需要时json数据格式

    post请求时:res = requests.post(url, data=data,headers=headers,verify=False)

    post请求时:res = requests.post(test_url,data=json.dumps(data),headers=headers)

    用request获取到的cookie,传给selenium使用, 全部代码示例如下: (敏感信息****表示)

    # -*- coding: utf-8 -*-
    import requests
    from selenium import webdriver
    import json
    from os.path import dirname,abspath
    
    
    def get_cookielin(driver):
        test_url = "https://login.*****.link/Account/Login"
        headers = {"Content-Type": "application/json;charset=utf-8",
                   "Accept": "application/json, application/xml, text/play, text/html, *.*",
                   "Accept-Encoding": "gzip, deflate,br",
                   "Accept-Language": "zh-CN,zh;q=0.9"}
        #根据Fiddler中content-type的类型,确认写入的data数据
        data = {"UseLoginGeetest":False,"Remember":"","Domin":"","ReturnUrl":"","UseLoginMutex":False,"MutexToken":"","LoginType":0,
                "UserName":"linyisss100349@bsasn.com","Password":
                "HADovxHy/k3PEyd9SYLvNfasasaa7APUh1/0IQ11WiDCop2WfcNAJkegRZc65W+FGojKjLDFUA5ziOhaM0IEyQ7sgfTfuhgxyEmLGF6rI1EU0pC2EmTrTOlRYYZIPXvW4tEIrrtfgFjX79AjAVmdoq08LmbZyNy5q76TTc="}
        #"UseLoginGeetest":False/Ture需要大写,Fiddler里面抓取的可能是小写
        res = requests.post(test_url,data=json.dumps(data),headers=headers)
        #data=json.dumps(data)需要传json格式的数据
        Tita_PC = res.cookies.get('Tita_PC')  #只获取‘Tita_PC’名称的cookie内容
    
        cookie1 = {'name': 'Tita_PC', 'value': Tita_PC}
        driver.get(test_url)   #写入cookie之前必须driver.get(url)
        #PhantomJS报错Unable to set Cookie,通过下面的方式修改
        driver.add_cookie(
            {
                'domain':'.italent.link',
                'name':cookie1['name'],
                'value':cookie1['value'],
                'path': '/',
                'expires': None
            }
        )
    
        driver.get(test_url)
        shishi_url = 'https://setting-cloud.*****.link/#home'
        driver.get(shishi_url)
        driver.implicitly_wait(10)
        driver.find_element_by_xpath('//*[@data-type="CloundApplication"]/span').click()
    
    def login():
        filepath = dirname(abspath(__file__))+'driver' #__file__用于获取文件的路径,abspath(__file__)获得绝对路径;dirname()用于获取上级目录
        #print(filepath)
        driver = webdriver.Chrome(filepath+'chromedriver.exe')
        driver.maximize_window()
        get_cookielin(driver)
    
    if __name__=='__main__':
        login()
    

      

    selenium中 WebDriver操作cookie的方法:

    get_cookies(): 获得所有cookie信息。

    get_cookie(name): 返回字典的key为“name”的cookie信息。

    add_cookie(cookie_dict) : 添加cookie。“cookie_dict”指字典对象,必须有name 和value 值。

    delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”。

    delete_all_cookies(): 删除所有cookie信息。

  • 相关阅读:
    thinkphp使用ajax程序报500错误
    非隐藏转发和隐藏转发的区别及选择
    表单文件(图片)上传到服务器,权限自动变成363,无法访问
    我收到了互联网应急中心的通报!记sqlmap的正确打开方式。
    css字体可以小于12px!被小米官网打脸
    阿里云CDN添加域名80端口和443端口什么区别?
    网站使用海外服务器,国内访问很慢的解决方案
    linux下设置php文件不区分大小写
    国际化
    Spring boot2.0学习笔记(一)
  • 原文地址:https://www.cnblogs.com/lintest/p/11728718.html
Copyright © 2011-2022 走看看