一,在Windows下使用python
1.官网登陆后下载对应的exe代理软件linux
2.下载完成后打开,打开完成后登陆127.0.0.1:22999,而后输入用户名和密码进行登陆.登陆成功后进入到以下界面web
3.将本机ip加入到对应的zone白名单chrome
点击对应zone的名称,进入到配置页面json
进入到设置页面后可添加白名单ip,包括帐号密码验证的帐号和密码也是在这里找,而不是登陆的帐号和密码windows
4.添加完成后,selenium代码以下:浏览器
import time
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
host = '127.0.0.1'
port = '24000'
chrome_options = Options()
chrome_options.add_argument("--proxy-server=http://{}:{}".format(host, port))
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('http://lumtest.com/myip.json')
time.sleep(5)
此时打开的浏览器就是带着代理ip的浏览器了,若是想用指定的ip,只须要将port设置成对应的端口便可.
总结:windows下使用所需条件
①下载代理软件并打开
②代理软件打开后访问127.0.0.1:22999进行认证和ip分配
③将本机ip添加到对应的zone白名单中
④selenium经过指定的端口使用对应的代理ip.
二.Linux下使用
1.安装python,执行apt-get install python(若是已经安装了python2.X版本,可跳过)
2.登陆luminati官网,找到对应的Bash安装脚本
curl -L https://luminati-china.biz/static/lpm/luminati-proxy-latest-setup.sh | bashbash
3.等待安装完成,默认启动目录在/usr/local/bin下边,以守护进程方式启动:curl
进入到/usr/local/bin目录后执行 nohup ./luminati start > logfile.file 2>&1 &ui
随后使用 ps -ef | grep luminati 查看是否启动成功,另外一种验证方式是执行curl 127.0.0.1:22999,若是能访问,说明启动成功
4.关键性的一步,若是你的linux ip为外网ip,那么,打开22999端口访问或者直接关闭防火墙,而后在你windows本机打开浏览器访问:linux的固定ip:22999进入到验证界面,而后输入帐号密码进行登陆,并分配ip,和windows版本下的第二步同样.
5.验证完成后将linux的固定ip添加到对应zone的白名单中,而后可经过:curl --proxy 127.0.0.1:24000 "http://lumtest.com/myip.json"进行验证ip是不是你的代理ip,同样的是经过修改端口进行代理ip的指定.
总结: ①须要安装python2.X版本才能安装成功代理软件 ②代理软件须要之后台守护进程的方式启动 ③添加了白名单后要进行登陆验证,即访问linux固定ip:22999进行登陆和ip的分配
三.windows下进行帐号密码验证(非白名单方式)
同样的须要先打开代理软件,而后进行登陆验证一波
而后主要是上python代码:
分为三个部分,第一个是须要添加两个配置同样的东西,基本上来讲是固定格式的,能够直接拷贝过去用.
先上一波结构:
这是须要用到的东西,它们都在同一个目录下,而后接下来上那三个东东的代码,一个是background.js,一个是manifest.json,还有一个就是咱们的py代码,直接本身新建文件,而后以我给出的名字命名便可(py文件的名字随便取)
新建一个文件夹用来放这两个文件,文件夹命名为:Chrome-proxy-helper
background.js
var config = {
mode: "fixed_servers",
rules: {
singleProxy: {
scheme: "http",
host: 'proxy_host',
port: parseInt('proxy_port')
},
bypassList: ["foobar.com"]
}
};
chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});
function callbackFn(details) {
return {
authCredentials: {
username: 'proxy_username',
password: 'proxy_password'
}
};
}
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{urls: ["<all_urls>"]},
['blocking']
);
manifest.json
{
"version": "1.0.0",
"manifest_version": 2,
"name": "Chrome Proxy",
"permissions": [
"proxy",
"tabs",
"unlimitedStorage",
"storage",
"<all_urls>",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"]
},
"minimum_chrome_version":"22.0.0"
}
最后是py代码
import os
import re
import time
import shutil
import zipfile
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class ExtensionHelper(object):
'''Selenium + Chrome 使用用户名密码认证的代理封装'''
CHROME_PROXY_HELPER_DIR = 'Chrome-proxy-helper' # Chrome代理模板插件目录
CUSTOM_CHROME_PROXY_EXTENSIONS_DIR = 'chrome-proxy-extensions' # 存储自定义Chrome代理扩展文件的目录
@classmethod
def create_extension(cls, proxy):
'''
建立插件
:param proxy: username:password@ip:port
:return:
'''
m = re.compile('([^:]+):([^\@]+)\@([\d\.]+):(\d+)').search(proxy) # 匹配代理格式是否正确
if m:
# 提取代理的各项参数
username = m.groups()[0]
password = m.groups()[1]
ip = m.groups()[2]
port = m.groups()[3]
# 建立一个定制Chrome代理扩展(zip文件)
if os.path.exists(cls.CUSTOM_CHROME_PROXY_EXTENSIONS_DIR):
shutil.rmtree(cls.CUSTOM_CHROME_PROXY_EXTENSIONS_DIR)
os.mkdir(cls.CUSTOM_CHROME_PROXY_EXTENSIONS_DIR)
extension_file_path = os.path.join(cls.CUSTOM_CHROME_PROXY_EXTENSIONS_DIR,
'{}.zip'.format(proxy.replace(':', '_')))
if not os.path.exists(extension_file_path):
# 扩展文件不存在,建立
zf = zipfile.ZipFile(extension_file_path, mode='w')
zf.write(os.path.join(cls.CHROME_PROXY_HELPER_DIR, 'manifest.json'), 'manifest.json')
# 替换模板中的代理参数
background_content = open(os.path.join(cls.CHROME_PROXY_HELPER_DIR, 'background.js')).read()
background_content = background_content.replace('proxy_host', ip)
background_content = background_content.replace('proxy_port', port)
background_content = background_content.replace('proxy_username', username)
background_content = background_content.replace('proxy_password', password)
zf.writestr('background.js', background_content)
zf.close()
return extension_file_path
else:
raise Exception('代理格式错误: username:password@ip:port')
if __name__ == '__main__':
user_pass = 'zone设置里的用户名:zone设置里的密码'
host = '127.0.0.1'
port = "24000"
proxy = '{0}@{1}:{2}'.format(user_pass, host, port)
chrome_options = Options()
chrome_options.add_extension(ExtensionHelper.create_extension(proxy))
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('http://lumtest.com/myip.json')
time.sleep(5)
#driver.quit()另外同一目录下新建chrome-proxy-extensions文件夹,而后尝试运行一波吧总结:①代理软件要开着 ②填的是zone的用户名和密码,不是登陆的用户名和密码 ③别漏了那两个文件,文件夹和文件的名字不要错了