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格式化css文件的方法
Mar 10 Python
python:socket传输大文件示例
Jan 18 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
Python生成器的使用方法和示例代码
Mar 04 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
python如何构建mock接口服务
Jan 28 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
总结对比php中的多种序列化
2016/08/28 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
vue实现文件上传读取及下载功能
2020/11/17 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
Python常用内置函数总结
2015/02/08 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
单利模式及python实现方式详解
2018/03/20 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
python中while和for的区别总结
2019/06/28 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
校三好学生主要事迹
2014/01/11 职场文书
销售人员获奖感言
2014/02/05 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
元宵晚会主持词
2014/03/25 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
统计工作个人总结
2015/03/03 职场文书
博士生专家推荐信
2015/03/25 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
sql字段解析器的实现示例
2021/06/23 SQL Server
html form表单基础入门案例讲解
2021/07/15 HTML / CSS