luminati python+selenium使用方式(白名單和帳號密碼驗證方式)

一,在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的用戶名和密碼,不是登陸的用戶名和密碼 ③別漏了那兩個文件,文件夾和文件的名字不要錯了
相關文章
相關標籤/搜索