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中字典和JSON互转操作实例
Jan 19 Python
python中enumerate函数用法实例分析
May 20 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
Sep 08 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
《与孩子一起学编程》python自测题
May 27 Python
python高阶爬虫实战分析
Jul 29 Python
Python使用folium excel绘制point
Jan 03 Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
Python如何使用函数做字典的值
Nov 30 Python
python实现录屏功能(亲测好用)
Mar 02 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常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
php获取错误信息的方法
2015/07/17 PHP
php上传excel表格并获取数据
2017/04/27 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
js判断浏览器的比较全的代码
2007/02/13 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
详谈js模块化规范
2017/07/07 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
python读取xml文件方法解析
2020/08/04 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
团代会邀请函
2015/02/02 职场文书
护士求职自荐信
2015/03/25 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript