一,在Windows下使用
1.官網登錄后下載對應的exe代理軟件
2.下載完成后打開,打開完成后登錄127.0.0.1:22999,然后輸入用戶名和密碼進行登錄.登錄成功后進入到如下界面
3.將本機ip加入到對應的zone白名單
點擊對應zone的名稱,進入到配置頁面
進入到設置頁面后可添加白名單ip,包括賬號密碼驗證的賬號和密碼也是在這里找,而不是登錄的賬號和密碼
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 | bash
3.等待安裝完成,默認啟動目錄在/usr/local/bin下邊,以守護進程方式啟動:
進入到/usr/local/bin目錄后執行 nohup ./luminati start > logfile.file 2>&1 &
隨后使用 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的用戶名和密碼,不是登錄的用戶名和密碼 ③別漏了那兩個文件,文件夾和文件的名字不要錯了