python白名单验证是什么意思_luminati python+selenium使用方式(白名单和账号密码验证方式)...

一,在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: [""]},

['blocking']

);

manifest.json

{

"version": "1.0.0",

"manifest_version": 2,

"name": "Chrome Proxy",

"permissions": [

"proxy",

"tabs",

"unlimitedStorage",

"storage",

"",

"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):

'''

创建插件

:paramproxy: 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的用户名和密码,不是登录的用户名和密码 ③别漏了那两个文件,文件夹和文件的名字不要错了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值