Python+PhantomJS请求库之爬虫代理设置

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 = "" 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 = ""# 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": "" }

最后附上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=")# 设置IP代理