51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 686|回复: 0
打印 上一主题 下一主题

Chrome代理、UA和Cookie如何在Selenium设置?

[复制链接]
  • TA的每日心情
    擦汗
    4 天前
  • 签到天数: 1042 天

    连续签到: 4 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2023-5-8 13:16:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     一、selenium设置Chrome User-Agent+代理
      先上代码,这里我直接用的UA轮子,随机取出一个来设置。
      from selenium import webdriver
      from selenium.webdriver.chrome.options import Options
      from fake_useragent import UserAgent
      headers = {'User-Agent': UserAgent().random} #从UA轮子里随机抽选一个用作配置,也可以自己手动设置
      print(headers) #自己手动设置,格式像这样(看输出)
      proxy = "127.0.0.1:8080" #这里是我自己本地开的一个代理服务用作测试
      ops = Options()
      ops.add_argument('User-Agent={}'.format(headers['User-Agent'])) #配置为自己设置的UA
      ops.add_argument('--proxy-server=http://%s' % proxy) #添加代理 格式为ip:port
      browser = webdriver.Chrome(options=ops)
      browser.get('http://192.168.31.130/dvwa/index.php')


      输出:
      {'User-Agent': 'Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36'}

      可在burpsuit上看到代理的流量说明代理成功,并且UA也已设置为自己配置的UA。

      二、selenium设置Chrome Cookie
      登录后可看到Cookie长这样:

      错误示例
      这估计很多人都踩了这个坑:
      browser.delete_all_cookies()  # 删除原来的cookie
      browser.add_cookie({'think_lang': 'zh-cn', 'PHPSESSID': '6be4ba542aeecd9bef7967269add2835'})
      browser.get('http://192.168.31.130/dvwa/index.php')


      然后就会报这个错。
      InvalidArgumentException: Message: invalid argument: missing 'name'
      正确示例
      我这样写是为了方便大家更清楚当Cookie有多个 name 和 value 时该如何设置。
      cookie1 = {'name': 'security', 'value': 'impossible'}
      cookie2 = {'name': 'PHPSESSID', 'value': 'n5u6pc2lul897cdca7pek6s713'}
      browser.delete_all_cookies()  # 删除原来的cookie
      browser.add_cookie(cookie1)
      browser.add_cookie(cookie2)
      browser.get('http://192.168.31.130/dvwa/index.php')


      当然你也可以用一个for循环显得更专业(doge)。
      cookie = {
          'security': 'impossible',
          'PHPSESSID': 'n5u6pc2lul897cdca7pek6s713'
      }
      browser.delete_all_cookies()  # 删除原来的cookie
      for name, value in cookie.items():
          browser.add_cookie({'name':name,'value':value})
      browser.get('http://192.168.31.130/dvwa/index.php')


      完整代码
      from selenium import webdriver
      from selenium.webdriver.chrome.options import Options
      from fake_useragent import UserAgent
      headers = {'User-Agent': UserAgent().random} #从UA轮子里随机抽选一个用作配置,也可以自己手动设置
      print(headers) #自己手动设置,格式像这样(看输出)
      proxy = "127.0.0.1:8080" #这里是我自己本地开的一个代理服务用作测试
      ops = Options()
      ops.add_argument('User-Agent={}'.format(headers['User-Agent'])) #配置为自己设置的UA
      ops.add_argument('--proxy-server=http://%s' % proxy) #添加代理 格式为ip:port
      browser = webdriver.Chrome(options=ops)
      browser.get('http://192.168.31.130/dvwa/index.php')
      cookie = {
          'security': 'impossible',
          'PHPSESSID': 'n5u6pc2lul897cdca7pek6s713'
      }
      browser.delete_all_cookies()  # 删除原来的cookie
      for name, value in cookie.items():
          browser.add_cookie({'name':name,'value':value})
      browser.get('http://192.168.31.130/dvwa/index.php')


      这里运行完如果想退出selenium驱动的浏览器记得用browser.quit(),手动叉掉的话进程可能没关掉。
      browser.quit()


      代码功能:代理并设置自定义UA然后用Cookie自动登录成功。


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-11 03:36 , Processed in 0.064360 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表