代码样例-Socks代理

本文档包含编程请求Socks代理服务器的代码样例,供开发者参考。

代码样例使用说明

  1. 代码样例不能直接运行,因为代码中的代理服务器59.38.241.25:23918、用户名myusername、密码mypassword都是虚构的,您替换成自己真实的信息就可以正常运行了。
  2. 代码样例正常运行所需的运行环境和注意事项在样例末尾均有说明,使用前请仔细阅读。
  3. 使用代码样例过程中遇到问题请联系售后客服,我们会为您提供技术支持。

Python

requests

requests请求网页
#!/usr/bin/env python
#-*- coding: utf-8 -*-

"""使用requests请求socks代理服务器
请求http和https网页均适用
"""

import requests
import base64

#要访问的目标网页
page_url = "http://dev.kdlapi.com/testproxy"

#代理服务器
proxy = "59.38.241.25:23918"

#用户名和密码(私密代理/独享代理)
username = "myusername"
password = "mypassword"

proxies = {
    'http': 'socks5://%s:%s@%s' % (username, password, proxy),
    'https': 'socks5://%s:%s@%s' % (username, password, proxy),
    #提示:如果希望在代理服务器上进行dns解析,把socks5替换成socks5h
}

headers = {
    "Accept-Encoding": "gzip", #使用gzip压缩传输数据让访问更快
}

r = requests.get(page_url, proxies=proxies, headers=headers)

print r.status_code #获取Reponse的返回码

if r.status_code == 200:
    r.enconding = "utf-8" #设置返回内容的编码
    print r.content #获取页面内容

使用提示

  • http/https网页均可适用
  • 运行环境要求:requests >= 2.10.0
  • socks支持是requests的额外特性,需要安装才能使用: pip install requests[socks]

urllib2

urllib2请求网页
#!/usr/bin/env python
#-*- coding: utf-8 -*-

"""使用urllib2请求socks5代理服务器
请求http和https网页均适用
"""

import urllib2
import base64
import zlib

import socks
from sockshandler import SocksiPyHandler

#要访问的目标网页
page_url = "http://dev.kdlapi.com/testproxy"

#代理服务器
proxy_ip = "59.38.241.25"
proxy_port = 23918

rdns = False #是否在代理服务器上进行dns查询

#用户名和密码(私密代理/独享代理)
username = "myusername"
password = "mypassword"

opener = urllib2.build_opener(SocksiPyHandler(socks.SOCKS5, proxy_ip, proxy_port, rdns, username, password))
opener.addheaders = [
    ("Accept-Encoding", "Gzip"), #使用gzip压缩传输数据让访问更快
]
r = opener.open(page_url)

print r.code #获取Reponse的返回码
content = r.read()
content_encoding = r.headers.getheader("Content-Encoding")
if content_encoding and "gzip" in content_encoding:
    print zlib.decompress(content, 16+zlib.MAX_WBITS) #获取页面内容
else:
    print content #获取页面内容

使用提示

  • 运行环境要求 python2.6 / 2.7
  • http/https网页均可适用
  • 使用此样例需要安装PySockspip install PySocks

Selenium

Chrome
Chrome(IP白名单)
# _*_ coding:utf‐8 _*
'''
基于selenium下Chrome的socks5白名单访问代理
ubuntu14.04环境
使用虚拟显示实现无窗口Chrome浏览器
官方目前没有支持账号密码认证代理
'''
from xvfbwrapper import Xvfb
from selenium import webdriver
import time

#要访问的目标网页
page_url = "http://dev.kdlapi.com/testproxy"

#代理服务器ip和端口
proxy = '59.38.241.25:23916'

#复制一份配置文件
desired_capabilities = webdriver.DesiredCapabilities.INTERNETEXPLORER.copy()
#改变配置文件的复制版本.
PROXY = "socks5://" + proxy
desired_capabilities['proxy'] = {
    "httpProxy": PROXY,
    "ftpProxy": PROXY,
    "sslProxy": PROXY,
    "noProxy": None,
    "proxyType": "MANUAL",
    "class": "org.openqa.selenium.Proxy",
    "autodetect": False
}

# 使用新实例驱动
options = webdriver.ChromeOptions()

#无窗口启动配置好的Chrome
xvfb = Xvfb()
xvfb.start()
driver = webdriver.Chrome(chrome_options=options,desired_capabilities=desired_capabilities)

#尝试访问登陆页面,登录页面有你的代理IP
driver.get(page_url)

#打出网页title和网页源代码
print driver.title
print driver.page_source

#退出
driver.quit()
xvfb.stop()

使用提示

  • 运行环境要求 python2.x + selenium + chrome + chrome driver + xvfb
  • socks5代理网页均可适用
  • 安装xvfb:pip install xvfbwrapper
  • 开发环境配置参考
PhantomJS
PhantomJS(IP白名单)
# -*- coding: utf-8 -*-
'''
使用selenium下的无窗口浏览器phantomjs的socks5白名单免登录示例
因为是无窗口浏览器,所以截了一张图片放在本程序当前目录下
打印出访问网址的title和网页源码
'''
from selenium import webdriver

#要访问的目标网页
page_url = "http://dev.kdlapi.com/testproxy"

#代理服务器ip和端口
proxy = '59.38.241.25:23918'

#代理参数设置
service_args = [
    '--proxy=%s' % proxy,
    '--proxy-type=socks5',
    #'--proxy-auth=%s:%s' %(username,password)

]

#启动PhantomJS
driver = webdriver.PhantomJS(service_args = service_args)

#打出网页title和网页源代码
print driver.title
print driver.page_source

#退出PhantomJS
driver.quit()

使用提示

  • 运行环境要求: python2.x
  • socks5代理网页均可适用
  • 使用此样例需要安装selenium、PhantomJS
  • PhantomJS可以直接使用pip安装
PhantomJS(用户名密码认证)
# -*- coding: utf-8 -*-
'''
使用selenium下的无窗口浏览器phantomjs的socks5认证代理示例
可以打印了访问网址的title和源代码
'''
from selenium import webdriver

#要访问的目标网页
page_url = "http://dev.kdlapi.com/testproxy"

#代理服务器ip和端口
ip = '59.38.241.25:23918'

#用户名和密码(私密代理/独享代理)
username = 'myusername'
password = 'mypassword'

#代理参数设置
service_args = [
    '--proxy=%s' % ip,
    '--proxy-type=socks5',
    '--proxy-auth=%s:%s' %(username,password)
]

#启动PhantomJS
driver = webdriver.PhantomJS(service_args = service_args)

#访问网址
driver.get(page_url)

#打出网页title和网页源代码
print driver.title
print driver.page_source

#退出PhantomJS
driver.quit()

使用提示

  • 运行环境要求 python2.x
  • socks5代理http/https网页均可适用
  • 使用此样例需要安装selenium、PhantomJS
  • PhantomJS可以直接使用pip安装