更多>>关于我们
西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效获取互联网任何公开可见信息。
您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。
数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。
更多>>技术文章
去年我们曾介绍过借助close-proxy-authentication插件,实现Firefox下HTTP代理自动认证的方案(详见http://www.site-digger.com/html/articles/20180822/662.html),本文再介绍另外一种思路。
熟悉Http Proxy Basic Authentication的同学应该知道,代理服务器软件(例如Squid)是通过检测Proxy-Authorization头的值来判断当前用户是否有访问权限的。如果没有该头或者值不正确,HTTP服务器通常会返回407状态码。
因此,只要我们能够给每个HTTP请求都自动加上正确的Proxy-Authorization头,那么就实现了自动代理认证,浏览器内不会再弹出授权验证窗口。
要实现这个功能,我们可以借助Modify Headers这个火狐插件(http://www.garethhunt.com/modifyheaders/help/?v=0.7.1.1,后附下载链接),通过这个插件我们可以给任意HTTP请求加上自定义的Header。
下面代码是Selenium + Firefox + Modify Headers 测试代码:
# coding: utf-8
# selenium_firefox_proxy_auto_auth_method2.py
# 借助Modify Headers插件实现火狐浏览器下的HTTP代理Basic认证
# 测试环境:Selenium 3.8.0 + geckodriver 0.18.0 + Firefox V56.0
import time
import re
from base64 import b64encode
from selenium import webdriver
# Modify Headers插件 - 用以HTTP代理Basic认证
# http://www.garethhunt.com/modifyheaders/help/?v=0.7.1.1
MODIFY_HEADERS_EXTENSION = 'modify_headers-0.7.1.1-fx.xpi'
def get_firefox(proxy):
fp = webdriver.FirefoxProfile()
m = re.compile('([^:]+):([^\@]+)\@([\d\.]+):(\d+)').search(proxy)
if m:
print 'Set proxy into {}'.format(proxy)
# 提取代理的各项参数
proxy_username = m.groups()[0]
proxy_password = m.groups()[1]
proxy_host = m.groups()[2]
proxy_port = int(m.groups()[3])
# 设置代理参数
fp.set_preference('network.proxy.type', 1)
fp.set_preference('network.proxy.http', proxy_host)
fp.set_preference('network.proxy.http_port', proxy_port)
fp.set_preference('network.proxy.ssl', proxy_host)
fp.set_preference('network.proxy.ssl_port', proxy_port)
credentials = '{}:{}'.format(proxy_username, proxy_password)
credentials = b64encode(credentials)
# 添加Modify Headers插
fp.add_extension(MODIFY_HEADERS_EXTENSION)
fp.set_preference('modifyheaders.config.active', True)
fp.set_preference('modifyheaders.headers.count', 1)
# 添加Proxy-Authorization头
fp.set_preference('modifyheaders.headers.action0', 'Add')
fp.set_preference('modifyheaders.headers.name0', 'Proxy-Authorization')
fp.set_preference("modifyheaders.headers.value0", 'Basic {}'.format(credentials))
fp.set_preference('modifyheaders.headers.enabled0', True)
firefox = webdriver.Firefox(firefox_profile=fp)
return firefox
def test():
firefox = get_firefox(proxy='test:kzp2016@59.55.102.216:8888')
# 访问http://httpbin.org/ip回显当前IP
firefox.get('https://httpbin.org/ip')
time.sleep(1000)
if __name__ == '__main__':
test()
运行截图如下所示:

附modify_headers-0.7.1.1-fx.xpi下载地址:http://pan.webscraping.cn:8000/index.php/s/qpSdIZqjtF2e09t















