python中使用tor代理

转载自http://nladuo.github.io/2016/07/17/python%E4%B8%AD%E4%BD%BF%E7%94%A8tor%E4%BB%A3%E7%90%86/

python中使用tor代理

Jul 17, 2016

说明

本文参考自:
http://ningning.today/2016/03/07/python/python-requests-tor-crawler/
http://stackoverflow.com/questions/6216653/how-to-let-tor-change-ip-automatically

工具

国外ubuntu服务器一台。

安装

1、安装tor


apt-get update && apt-get install tor

2、生成密码


tor --hash-password mypassword

3、编辑/etc/tor/torrc,加上


ControlPort 9051


HashedControlPassword 16:872860B76453A77D60CA2BB8C1A7042072093276A3D701AD684053EC4C


MaxCircuitDirtiness 10

16后面的hash根据上一条命令生成的hash来修改, MaxCircuitDirtiness 10代表10秒更换一次ip,可以自定义。
4、重启tor服务


/etc/init.d/tor restart

编写代码

代码基本上来自http://ningning.today/2016/03/07/python/python-requests-tor-crawler/ ,但是发现不能用,只修改了几行。


#!/usr/bin/env python


# -*- coding:utf-8 -*-




import os


import requests


import requesocks


import time




url = 'https://api.ipify.org?format=json'






def getip_requests(url):


print "(+) Sending request with plain requests..."


r = requests.get(url)


print "(+) IP is: " + r.text.replace("n", "")






def getip_requesocks(url):


print "(+) Sending request with requesocks..."


session = requesocks.session()


session.proxies = {'http': 'socks5://127.0.0.1:9050',


'https': 'socks5://127.0.0.1:9050'}


r = session.get(url)


print "(+) IP is: " + r.text.replace("n", "")






def main():


print "Running tests..."


getip_requests(url)


while True:


getip_requesocks(url)


time.sleep(10);






if __name__ == "__main__":


main()

效果

ip_change
可以看到,第一个是自己的ip,之后是使用tor代理获得的ip,每十秒换一个。

发表评论