爬虫学习笔记–Tor隐藏Ip

因为在爬虫时,如果使用了默认的IP 可能导致自己的IP遭到封禁

所以就要隐藏自己的IP 

事先说明 爬虫要有度 也要考虑服务器的压力 

本篇基于win10 

tor的原理

http://www.cnblogs.com/likeli/p/5719230.html

http://blog.csdn.net/whiup/article/details/52317779

https://www.deepdotweb.com/2014/05/23/use-tor-socks5-proxy/

1.安装tor浏览器 

http://www.theonionrouter.com/projects/torbrowser.html.en

如果进不去网页 那么请自行解决 

2.tor的配置请看这篇

https://jingyan.baidu.com/article/adc815137654fbf723bf73b1.html

这样就可以搭建好了tor

python 要安装库

pip install pysocks

pip install stem

[python] 
view plain
 copy

  1. import socks  
  2. import socket  
  3. import requests  
  4.   
  5. socks.set_default_proxy(socks.SOCKS5,“127.0.0.1”,9150)  
  6. socket.socket = socks.socksocket  
  7.   
  8. a = requests.get(“http://checkip.amazonaws.com”).text  
  9.   
  10. print a  




通过访问

[python] 
view plain
 copy

  1. http://checkip.amazonaws.com  

会得到一个ip 会发现这个ip已经是隐藏的ip了 

[python] 
view plain
 copy

  1. controller.signal(Signal.NEWNYM)  



切换ip

[python] 
view plain
 copy

  1. #coding=utf-8  
  2. from stem import Signal  
  3. from stem.control import Controller  
  4. import socket  
  5. import socks  
  6. import requests  
  7. import time  
  8. import sys  
  9. reload(sys)  
  10. sys.setdefaultencoding(‘utf-8’)  
  11.   
  12. controller = Controller.from_port(port=9151)  
  13. controller.authenticate()  
  14. socks.set_default_proxy(socks.SOCKS5,“127.0.0.1”,9150)  
  15. socket.socket = socks.socksocket  
  16.   
  17. total_scrappy_time = 0  
  18. total_changeIP_time = 0  
  19. for x in range(0,10):  
  20.     a = requests.get(“http://checkip.amazonaws.com”).text  
  21.     print (“第”+str(x+1)+“次IP:”+a)  
  22.   
  23.     time1 = time.time()  
  24.     a = requests.get(“http://www.santostang.com/”).text  
  25.   
  26.     time2 = time.time()  
  27.     total_scrappy_time = total_scrappy_time + time2-time1  
  28.     print (“第”+str(x+1)+“次抓取花费时间:”+str(time2-time1))  
  29.   
  30.     time3 = time.time()  
  31.     controller.signal(Signal.NEWNYM)  
  32.     time.sleep(5)  
  33.     time4 = time.time()  
  34.     total_changeIP_time = total_changeIP_time + time4-time3-5  
  35.     print (“第”+str(x+1)+“次更换IP花费时间: “+str(time4-time3-5))  
  36.   
  37. print (“平均抓取花费时间:”+str(total_scrappy_time/10))  
  38. print (“平均更换IP时间:”+str(total_changeIP_time/10))