【原创】python socket Proxy.

python基于socket的代理
SocksiPy--- https://pypi.python.org/pypi/SocksiPy
SocksiPy-branch - version:1.01 --- https://pypi.python.org/pypi/SocksiPy-branch

用法:
print "----------- socket proxy ----------"
import socks
import socket
base_socket = socket.socket

import requests as req
import urllib

print "\n-------------not set proxy--------------"
printurllib.urlopen("http://1111.ip138.com/ic.asp").read()

print "\n--------------set proxy------------------"
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5,"10.10.20.125",443)
socket.socket = socks.socksocket
printurllib.urlopen("http://1111.ip138.com/ic.asp").read()

print '\n--------------cancel proxy----------------'
socket.socket = base_socket
printurllib.urlopen("http://1111.ip138.com/ic.asp").read()

print '\n--------------reset socketproxy-----------------'
socket.socket = socks.socksocket
print req.get("http://1111.ip138.com/ic.asp").content

print '\n--------------recancel proxy----------------'
socket.socket.setproxy()
print req.get("http://1111.ip138.com/ic.asp").content


通过输出,可以发现是可以用的
这是源示例,还有别人改造过的代码是 sqlmap的代码, thirdparty/socks/socks.py
里面是加了几个函数的, wrapmodule、 unwrapmodule、 create_connection 用的其他的我没事细看,没多做diff看改动过哪里。
用法呢,可以看 sqlmap 的代码: lib/core/option.py
if scheme in ( PROXY_TYPE . SOCKS4 , PROXY_TYPE . SOCKS5 ):
socks.setdefaultproxy(socks. PROXY_TYPE_SOCKS5 if scheme == PROXY_TYPE . SOCKS5 else socks. PROXY_TYPE_SOCKS4 , \
hostname, port, username = username, password = password)
s ocks.wrapmodule(urllib2)
else :
socks.unwrapmodule(urllib2)
看过sqlmap的socks.py就可以理解, wrapmodule其实就对对某个模块的socket代码进行备份、替换为socket代理模式。
怎么说呢,推荐使用sqlmap改造的socks.py

TODO:缺点:项目全局的socket代理,感觉不是太好,得稍微改造一下,让其支持多线程、多socket代理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值