PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到。它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等。
PhantomJS代理设置代码如下(新版本selenium已经弃用,使用谷歌无界面浏览器)
from selenium import webdriver
"""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错误(可选)
]"""
# url链接
url = "http://httpbin.org/get"
service_args = ["--proxy=121.233.206.44:9999", # 代理IP
"--proxy-type=http"] # 代理协议类型http/HTTPS
# 启用PhantomJS无界面浏览器,并传递参数为代理IP
browser = webdriver.PhantomJS(executable_path=r"D:\phantomjs-2.1.1-windows\bin\phantomjs.exe",service_args=service_args)
browser.get(url=url)
print(browser.page_source)
运行结果出乎意料的是最新版本的selenium不在支持PhantomJS了,让我们使用谷歌或者火狐的无头浏览器
UserWarning: Selenium support for PhantomJS has been deprecated,
please use headless versions of Chrome or Firefox instead
warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '
由于我的浏览器是谷歌浏览器,所以我就使用谷歌的无头浏览器进行IP代理,
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 创建谷歌浏览器模拟设置对象
chrome_options = Options()
proxy = "182.92.113.183:8118" # 代理IP
url = "http://httpbin.org/get" # url链接
# 设置谷歌浏览器无界面模式,即浏览器不停可视化页面
chrome_options.add_argument("--headless")
# 禁用使用GPU加速
chrome_options.add_argument("--disable-gpu")
# 设置语言
chrome_options.add_argument("-lang=zh-cn") # 中文
# chrome_options.add_argument("-lang=en-GB") # 英文
# 设置谷歌浏览器代理IP
chrome_options.add_argument("--proxy-server=http://" proxy)
# 指定浏览器分辨率
chrome_options.add_argument("window-size=1920x3000")
# 模拟谷歌浏览器,并通过chrome_options参数传递代理IP
browser = webdriver.Chrome(chrome_options=chrome_options,executable_path="D:\chromedriver.exe")
browser.get(url=url)
print(browser.find_element_by_xpath("/html/body/pre").text)
运行结果如下,origin的IP地址已经更改为代理IP
{
"args": {},
"headers": {
"Accept": "text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-cn",
"Host": "httpbin.org",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/74.0.3729.169 Safari/537.36"
},
"origin": "182.92.113.183, 182.92.113.183",
"url": "https://httpbin.org/get"
}
最后附上selenium模块add_argument常用参数
chrome_options.add_argument('--user-agent=""') # 设置请求头的User-Agent
chrome_options.add_argument('--window-size=1280x1024') # 设置浏览器分辨率(窗口大小)
chrome_options.add_argument('--start-maximized') # 最大化运行(全屏窗口),不设置,取元素会报错
chrome_options.add_argument('--disable-infobars') # 禁用浏览器正在被自动化程序控制的提示
chrome_options.add_argument('--incognito') # 隐身模式(无痕模式)
chrome_options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面
chrome_options.add_argument('--disable-javascript') # 禁用javascript
chrome_options.add_argument('--blink-settings=imagesEnabled=false') # 不加载图片, 提升速度
chrome_options.add_argument('--headless') # 浏览器不提供可视化页面
chrome_options.add_argument('--ignore-certificate-errors') # 禁用扩展插件并实现窗口最大化
chrome_options.add_argument('--disable-gpu') # 禁用GPU加速
chrome_options.add_argument('--disable-software-rasterizer')
chrome_options.add_argument('--disable-extensions') # 禁止扩展
chrome_options.add_argument('--start-maximized') # 启动就最大化
chrome_options.add_argument("--proxy-server=http://xxxxxxx") # 设置IP代理