Selenium设置Chrome代理、UA和Cookie

发表于:2023-5-08 09:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:知人知面    来源:博客园

  一、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自动登录成功。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号