xxx.xxx.xxx.xx1
xxx.xxx.xxx.xx2
.xx1是默认那个,如何在python内用第二个IP?
xxx.xxx.xxx.xx2
.xx1是默认那个,如何在python内用第二个IP?

1 manoon Nov 20, 2012 socket proxy |
2 mudone Nov 20, 2012 cURL可以指定ip发起请求。 |
3 CoX Nov 20, 2012 以前做过个小应用,用的是httplib2,稍作了下修改就能bind ip 了,不知道requests能不能直接bind ip |
4 Livid MOD PRO import requests headers = {} headers['Host'] = 'www.example.com' requests.get('http://10.0.0.1/', headers=headers) |
5 BigZ Nov 20, 2012 @Livid 你没有看懂lz意思, lz,你只能修改路由表,让系统使用指定IP作为源址,用ip route 来改 简单的做法是,你先在本机取消一个ip的绑定,只留你想要的那个 或者你起一个nginx做代理,配置文件里面listen两个不同的ip,python使用这个代理去采集,反正都是本机,性能损失不大 |
7 bhuztez Nov 20, 2012 SO_BINDTODEVICE 泪流满面啊 |
10 zbgzao Nov 20, 2012 当然random_ip务必要改为外网IP http://gist.github.com/4117504 |
12 kuaizi Nov 20, 2012 |
14 ledzep2 Nov 20, 2012 bind正解 |
16 humiaozuzu Nov 21, 2012 @Livid @zbgzao 你的绞尽脑汁就是copy的很辛苦吗? http://stackoverflow.com/a/1150408/492864 @liuxurong google: python set source ip 就有很多答案了 |
19 neildd Dec 5, 2012 --- /usr/lib64/python2.4/httplib.py 2009-09-04 03:38:18.000000000 +0800 +++ /usr/lib64/python2.4/httplib.py 2010-07-06 18:07:18.000000000 +0800 @@ -156,6 +156,7 @@ # maximal amount of data to read at one time in _safe_read MAXAMOUNT = 1048576 +Local_BindIP = None class HTTPMessage(mimetools.Message): def addheader(self, key, value): @@ -621,6 +622,8 @@ af, socktype, proto, canonname, sa = res try: self.sock = socket.socket(af, socktype, proto) + if Local_BindIP is not None: + self.sock.bind((Local_BindIP,0)) if self.debuglevel > 0: print "connect: (%s, %s)" % (self.host, self.port) self.sock.connect(sa) |