selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)


Posted in Python onNovember 29, 2018

本文介绍了selenium设置proxy、headers的方法,把phantomjs、Chrome、Firefox几个浏览器的设置方法都总结一下,分享给大家,也给自己留个笔记

phantomjs

设置ip

方法1:

service_args = [
  '--proxy=%s' % ip_html,  # 代理 IP:prot  (eg:192.168.0.28:808)
  '--proxy-type=http',      # 代理类型:http/https
  ‘--load-images=no',      # 关闭图片加载(可选)
  '--disk-cache=yes',      # 开启缓存(可选)
  '--ignore-ssl-errors=true'  # 忽略https错误(可选)
]
driver = webdriver.PhantomJS(service_args=service_args)

方法2:

browser=webdriver.PhantomJS(PATH_PHANTOMJS)

# 利用DesiredCapabilities(代理设置)参数值,重新打开一个sessionId,我看意思就相当于浏览器清空缓存后,加上代理重新访问一次url
proxy=webdriver.Proxy()
proxy.proxy_type=ProxyType.MANUAL
proxy.http_proxy='1.9.171.51:800'

# 将代理设置添加到webdriver.DesiredCapabilities.PHANTOMJS中
proxy.add_to_capabilities(webdriver.DesiredCapabilities.PHANTOMJS)
browser.start_session(webdriver.DesiredCapabilities.PHANTOMJS)
browser.get('http://1212.ip138.com/ic.asp')

print('1: ',browser.session_id)
print('2: ',browser.page_source)
print('3: ',browser.get_cookies())

还原为系统代理

# 还原为系统代理
proxy=webdriver.Proxy()
proxy.proxy_type=ProxyType.DIRECT
proxy.add_to_capabilities(webdriver.DesiredCapabilities.PHANTOMJS)
browser.start_session(webdriver.DesiredCapabilities.PHANTOMJS)
browser.get('http://1212.ip138.com/ic.asp')

设置请求头

方法2

import random,requests,json
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.proxy import ProxyType


#随机获取一个ip
def proxies():
  r = requests.get("http://120.26.166.214:9840/JProxy/update/proxy/scoreproxy")
  rr = json.loads(r.text)
  hh = rr['ip'] + ":" + "8907"
  print(hh)
  return hh
ips =proxies()


#设置phantomjs请求头和代理方法一:
#-------------------------------------------------------------------------------------
# 设置代理
service_args = [
  '--proxy=%s' % ips, # 代理 IP:prot  (eg:192.168.0.28:808)
  '--ssl-protocol=any',      #忽略ssl协议
  '--load - images = no',     # 关闭图片加载(可选)
  '--disk-cache=yes',       # 开启缓存(可选)
  '--ignore-ssl-errors=true'   # 忽略https错误(可选)
]

#设置请求头
user_agent = (
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) " +
  "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36"
  )
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = user_agent
driver = webdriver.PhantomJS(executable_path=r"C:\soft\phantomjs-2.1.1-windows\bin\phantomjs.exe",
               desired_capabilities=dcap,service_args=service_args)

driver.get(url='http://www.baidu.com')
page=driver.page_source
print(page)

#设置phantomjs请求头和代理方法二:
#-------------------------------------------------------------------------------------
desired_capabilities = DesiredCapabilities.PHANTOMJS.copy()
# 从USER_AGENTS列表中随机选一个浏览器头,伪装浏览器
desired_capabilities["phantomjs.page.settings.userAgent"] = (random.choice('请求头池'))

# 不载入图片,爬页面速度会快很多
desired_capabilities["phantomjs.page.settings.loadImages"] = False

# 利用DesiredCapabilities(代理设置)参数值,重新打开一个sessionId,我看意思就相当于浏览器清空缓存后,加上代理重新访问一次url
proxy = webdriver.Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = random.choice('ip池')
proxy.add_to_capabilities(desired_capabilities)
phantomjs_driver = r'C:\phantomjs-2.1.1-windows\bin\phantomjs.exe'
# 打开带配置信息的phantomJS浏览器
driver = webdriver.PhantomJS(executable_path=phantomjs_driver,desired_capabilities=desired_capabilities)
driver.start_session(desired_capabilities)


driver.get(url='http://www.baidu.com')
page=driver.page_source
print(page)


# 隐式等待5秒,可以自己调节
driver.implicitly_wait(5)
# 设置10秒页面超时返回,类似于requests.get()的timeout选项,driver.get()没有timeout选项
# 以前遇到过driver.get(url)一直不返回,但也不报错的问题,这时程序会卡住,设置超时选项能解决这个问题。
driver.set_page_load_timeout(20)
# 设置10秒脚本超时时间
driver.set_script_timeout(20)

 

#翻页命令
driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')

firefox

import time 
from selenium.webdriver.common.proxy import* 

myProxy = '202.202.90.20:8080'

proxy = Proxy({
 'proxyType': ProxyType.MANUAL, 
 'httpProxy': myProxy, 
 'ftpProxy': myProxy, 
 'sslProxy': myProxy, 
 'noProxy': ''
 })

profile = webdriver.FirefoxProfile()
if proxy:
  profile = get_firefox_profile_with_proxy_set(profile, proxy)
if user_agent:
  profile.set_preference("general.useragent.override", user_agent)

driver=webdriver.Firefox(proxy=proxy,profile=profile) 
driver.get('https://www.baidu.com') 
time.sleep(3) 
driver.quit()
 
firefox无头模式
from selenium import webdriver

# 创建的新实例驱动
options = webdriver.FirefoxOptions()
#火狐无头模式
options.add_argument('--headless')
options.add_argument('--disable-gpu')
# options.add_argument('window-size=1200x600')

executable_path='./source/geckodriver/geckodriver.exe'
driver_path = webdriver.Firefox(firefox_options=options,executable_path=executable_path)

chrome

# !/usr/bin/python
# -*- coding: utf-8 -*-

from selenium import webdriver

# 进入浏览器设置
options = webdriver.ChromeOptions()
#谷歌无头模式
options.add_argument('--headless')
options.add_argument('--disable-gpu')
# options.add_argument('window-size=1200x600')
# 设置中文
options.add_argument('lang=zh_CN.UTF-8')
# 更换头部
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
#设置代理
if proxy:
  options.add_argument('proxy-server=' + proxy)
if user_agent:
  options.add_argument('user-agent=' + user_agent)

browser = webdriver.Chrome(chrome_options=options)
url = "https://httpbin.org/get?show_env=1"
browser.get(url)
browser.quit()

 selenium设置chrome?cookie

# !/usr/bin/python
# -*- coding: utf-8 -*-

from selenium import webdriver
browser = webdriver.Chrome()

url = "https://www.baidu.com/"
browser.get(url)
# 通过js新打开一个窗口
newwindow='window.open("https://www.baidu.com");'
# 删除原来的cookie
browser.delete_all_cookies()
# 携带cookie打开
browser.add_cookie({'name':'ABC','value':'DEF'})
# 通过js新打开一个窗口
browser.execute_script(newwindow)
input("查看效果")
browser.quit()

selenium设置chrome-图片不加载

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {
  'profile.default_content_setting_values': {
    'images': 2
  }
}
options.add_experimental_option('prefs', prefs)
browser = webdriver.Chrome(chrome_options=options)

# browser = webdriver.Chrome()
url = "http://image.baidu.com/"
browser.get(url)
input("是否有图")
browser.quit()

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python图像灰度变换及图像数组操作
Jan 27 Python
python 写的一个爬虫程序源码
Feb 28 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
Python多线程原理与用法详解
Aug 20 Python
详解Python 正则表达式模块
Nov 05 Python
带你认识Django
Jan 15 Python
Python Django框架实现应用添加logging日志操作示例
May 17 Python
python hash每次调用结果不同的原因
Nov 21 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
Apr 28 Python
Python基于xlutils修改表格内容过程解析
Jul 28 Python
pycharm实现猜数游戏
Dec 07 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 #Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 #Python
pycharm 取消默认的右击运行unittest的方法
Nov 29 #Python
selenium+python设置爬虫代理IP的方法
Nov 29 #Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 #Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 #Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 #Python
You might like
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
博士208HAF收音机实习报告
2021/03/02 无线电
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
2017/02/09 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
python对html过滤处理的方法
2018/10/21 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
小学生班会演讲稿
2014/01/09 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
二手房购房协议书范本
2014/10/05 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js