资源说明:### Selenium 设置 Proxy 和 Headers 方法 (PhantomJS、Chrome、Firefox)
在进行自动化测试或爬虫开发时,Selenium 是一个非常强大的工具。它允许我们控制浏览器执行一系列操作,包括但不限于打开网页、填写表单以及点击按钮等。但在某些场景下,我们需要通过代理服务器访问网页或者更改请求头来模拟真实用户的行为。下面详细介绍如何使用Selenium设置代理和请求头,适用于PhantomJS、Chrome和Firefox三种浏览器。
#### PhantomJS 设置 Proxy 和 Headers
**设置 Proxy**
在PhantomJS中设置代理有两种主要方式:
1. **使用 `service_args` 参数**:
```python
service_args = [
'--proxy=%s' % ip_html, # 代理IP:端口(例如: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. **使用 `webdriver.Proxy()` 类**:
```python
browser = webdriver.PhantomJS(PATH_PHANTOMJS)
proxy = webdriver.Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = '1.9.171.51:800'
proxy.add_to_capabilities(webdriver.DesiredCapabilities.PHANTOMJS)
browser.start_session(webdriver.DesiredCapabilities.PHANTOMJS)
browser.get('http://1212.ip138.com/ic.asp')
```
若要恢复为系统默认代理设置,可以使用以下代码:
```python
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')
```
**设置 Headers**
对于PhantomJS来说,可以通过修改`DesiredCapabilities`来设置请求头。示例代码如下:
```python
import random, requests, json
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
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()
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER"
)
service_args = [
'--proxy=%s' % ips, # 代理IP:端口(例如:192.168.0.28:808)
'--ssl-protocol=any', # 忽略ssl协议
'--load-images=no', # 关闭图片加载(可选)
'--disk-cache=yes', # 开启缓存(可选)
'--ignore-ssl-errors=true' # 忽略HTTPS错误(可选)
]
driver = webdriver.PhantomJS(desired_capabilities=dcap, service_args=service_args)
```
#### Chrome 设置 Proxy 和 Headers
**设置 Proxy**
对于Chrome,可以通过创建`ChromeOptions`对象并添加`--proxy-server`参数来设置代理。
```python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--proxy-server=%s' % ip_html) # 代理IP:端口
driver = webdriver.Chrome(chrome_options=chrome_options)
```
**设置 Headers**
同样地,通过`ChromeOptions`对象来设置请求头。
```python
chrome_options = Options()
chrome_options.add_argument("user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36")
```
#### Firefox 设置 Proxy 和 Headers
**设置 Proxy**
Firefox中设置代理也比较简单,只需使用`FirefoxProfile`来配置代理服务器。
```python
from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
profile = FirefoxProfile()
profile.set_preference('network.proxy.type', 1)
profile.set_preference('network.proxy.http', '1.9.171.51')
profile.set_preference('network.proxy.http_port', 800)
driver = webdriver.Firefox(firefox_profile=profile)
```
**设置 Headers**
对于Firefox,同样可以使用`FirefoxProfile`来设置请求头。
```python
profile = FirefoxProfile()
profile.set_preference("general.useragent.override", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36")
driver = webdriver.Firefox(firefox_profile=profile)
```
### 总结
以上介绍了如何使用Selenium为PhantomJS、Chrome和Firefox三种浏览器设置代理和请求头的方法。这些技术可以帮助开发者更好地模拟用户行为,实现更复杂的自动化测试和爬虫需求。在实际应用中,可以根据具体需求选择适合自己的配置方式。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。