Tor浏览器是互联网上保护隐私最有力的工具之一,利用Tor技术改变请求的IP地址,可以有效地防止反爬机制对IP的封锁。
1、首先在电脑上安装Tor浏览器,官网https://www.torproject.org/自行安装
2、安装所需要的Python库
3、Tor的默认端口为9150,使用socks请求端口9150发出每次请求,然后请求https://checkip.amazonaws.com/获取本次抓取使用的IP地址
4、代码例程(运行代码时保持Tor浏览器为开启的状态,否则会报错:目标计算机拒绝连接)
- #安装第三方库PySocks、stem
- #库的下载方式↓
- #pip install pysocks
- #pip install stem #抓取和更换ip
- #利用洋葱路由的加密技术转获得随机匿名ip
- #运行程序时保持Tor软件处于打开状态,否则会出现目标计算机拒绝连接的错误
- import socket #标准库
- import socks #第三方库,获取Tor分配的ip
- import requests
- import time
- from stem import Signal # 第三方库,用来更换ip
- from stem.control import Controller
-
-
- #检查是否能获取ip
- def check():
- # 开始连接
- # Tor默认端口为9150
- socks.set_default_proxy(socks.SOCKS5, '127.0.0.1', 9150)
- socket.socket = socks.socksocket
-
- #检查这次获取的ip地址
- a = requests.get('https://checkip.amazonaws.com/').text
- print(a)
-
- #更换ip
- def changeIP():
- #更新ip通过ControlPort连接Tor的服务,发出一个NEWNYM的信号。Tor浏览器默认ControlPort的端口是9151
- controller = Controller.from_port(port=9151)
- controller.authenticate()
- socks.set_default_proxy(socks.SOCKS5, '127.0.0.1', 9150)
- socket.socket = socks.socksocket
-
- total_scrappy_time = 0 #抓取网页信息的时间
- total_changeIP_time =0 #更换ip的时间
-
- #更换10次试试
- for x in range(0,10):
- a = requests.get('https://checkip.amazonaws.com/').text
- print(f'第 {x+1} 次 IP:{a}')
-
- time1 = time.time()
- #这里随便请求一个网站测试连接
- # b = requests.get('http://acgboy.gitee.io/').text
- b = requests.get('https://www.tool77.com/').text
- time2 = time.time()
- total_scrappy_time = total_scrappy_time + time2 - time1
- print(f'第 {x+1} 次抓取网页花费时间:{time2 - time1}')
-
- time3 = time.time()
-
- # 发出一个NEWNYM的信号,更换ip
- controller.signal(Signal.NEWNYM)
-
- time.sleep(5)
- time4 = time.time()
- total_changeIP_time = total_changeIP_time + time4 - time3 -5
- print(f'第 {x+1} 次更换IP花费时间:{time4 - time3 -5}')
- print('*'*20)
-
- print('平均抓取花费时间:',total_scrappy_time/10)
- print('平均更换IP花费时间:',total_changeIP_time/10)
-
- # check()
- changeIP()
复制代码 Tor浏览器
Tor的三次跳转
代码演示
|