Python - 多处理和猴子修补方式的安全性? (最好的猴子补丁方法可能来自我的想法)

时间:2015-06-03 08:41:55

标签: python sockets proxy

我正在编写一个代理软件,这个代理软件支持所有标准的,但现在最难的问题是,“每个域名/ url的袜子代理(如果'???'在self.host:做袜子'”没有休息整个脚本使用猴子修补方法,我必须使用猴子修补方法因为它是最好的没有任何错误到目前为止,但如果我使用该方法,我的代理将使用该socks服务器下载所有页面,而不仅仅是我的页面想要使用socks代理只是因为简单的猴子修补方法“套接字”改变整个套接字库并使整个套接字库使用那个socks代理,以及基于套接字库的httplib,urllib。

https://github.com/Anorov/PySocks

import urllib2
import socket
import socks

socks.set_default_proxy(socks.SOCKS5, "localhost")
socket.socket = socks.socksocket

urllib2.urlopen("http://www.somesite.com/") # All requests will pass through the SOCKS proxy

我必须使用猴子补丁,openner.open方法从那个页面打破了很多页面,如永远重定向30x,TLSv1错误....但猴子补丁是“完美的”,没有错误,没有任何东西,只是工作,但整个本地代理将使用多余的socks代理,我想每页使用socks代理。

经过一天又一天的不停思考,我想出了一些事情,“如果我使用多处理创建一个全新的流程,然后是那个进程的猴子补丁套接字,请从上面获取来自域/ url的内容而不影响我本地代理主进程并将内容返回到我的主进程,只是使用该内容显示到我的Web浏览器,这太棒了!“

我的方法几乎就像:“我有一个代理监听127.0.0.1:1111并创建另一个代理监听127.0.0.1:2222,代理端口2222将猴子修补套接字库使其下载页面使用我的socks代理,每次我想使用我的socks代理时,我都会用2222代理链接我的1111代理“。

另外如果可以完成猴子修补方法,可能我们可以通过猴子修补套接字进行带宽限制,而不会破坏主要过程。

我的想法可能是有史以来最伟大的猴子补丁的诞生,请帮助我,如果你能帮我写一些类似的演示代码,我将非常感激。

1 个答案:

答案 0 :(得分:-1)

以下是我对我的问题的回答,谢谢大家:

import multiprocessing as mp
import urllib.request

def foo(q):
    #q.put("123")
    import socks
    import socket
    socks.set_default_proxy(socks.SOCKS5, "localhost", 10080)
    socket.socket = socks.socksocket
    r = urllib.request.urlopen("http://httpbin.org/ip")
    #print("123")
    q.put(r.read())

if __name__ == '__main__':
    ctx = mp.get_context('spawn')
    q = ctx.Queue()
    p = ctx.Process(target=foo, args=(q,))
    p.start()
    print(q.get())
    p.join()
    r = urllib.request.urlopen("http://httpbin.org/ip")
    print(r.read())

这种方式将从该过程创建一个独立的进程和猴子补丁套接字库。

ILDE的输出:

b'{\n  "origin": "xxx.148.2.18"\n}\n'
b'{\n  "origin": "xx.xxx.113.133"\n}\n'