搜索

查看: 3293|回复: 11

[Python] Python爬虫_通过Tor浏览器获得匿名IP

[复制链接]
发表于 2022-6-25 23:07:51 | 显示全部楼层 |阅读模式
小老虎 2022-6-25 23:07:51 3293 11 看全部
Tor浏览器是互联网上保护隐私最有力的工具之一,利用Tor技术改变请求的IP地址,可以有效地防止反爬机制对IP的封锁。
1、首先在电脑上安装Tor浏览器,官网https://www.torproject.org/自行安装

2、安装所需要的Python库



  1. pip install pysocks
复制代码
  1. pip install stem
复制代码


3、Tor的默认端口为9150,使用socks请求端口9150发出每次请求,然后请求https://checkip.amazonaws.com/获取本次抓取使用的IP地址


4、代码例程(运行代码时保持Tor浏览器为开启的状态,否则会报错:目标计算机拒绝连接)




  1. #安装第三方库PySocks、stem
  2. #库的下载方式↓
  3. #pip install pysocks
  4. #pip install stem   #抓取和更换ip
  5. #利用洋葱路由的加密技术转获得随机匿名ip
  6. #运行程序时保持Tor软件处于打开状态,否则会出现目标计算机拒绝连接的错误
  7. import socket   #标准库
  8. import socks    #第三方库,获取Tor分配的ip
  9. import requests
  10. import time
  11. from stem import Signal     # 第三方库,用来更换ip
  12. from stem.control import Controller


  13. #检查是否能获取ip
  14. def check():
  15.     # 开始连接
  16.     # Tor默认端口为9150
  17.     socks.set_default_proxy(socks.SOCKS5, '127.0.0.1', 9150)
  18.     socket.socket = socks.socksocket

  19.     #检查这次获取的ip地址
  20.     a = requests.get('https://checkip.amazonaws.com/').text
  21.     print(a)

  22. #更换ip
  23. def changeIP():
  24.     #更新ip通过ControlPort连接Tor的服务,发出一个NEWNYM的信号。Tor浏览器默认ControlPort的端口是9151
  25.     controller = Controller.from_port(port=9151)
  26.     controller.authenticate()
  27.     socks.set_default_proxy(socks.SOCKS5, '127.0.0.1', 9150)
  28.     socket.socket = socks.socksocket

  29.     total_scrappy_time = 0  #抓取网页信息的时间
  30.     total_changeIP_time =0  #更换ip的时间

  31.     #更换10次试试
  32.     for x in range(0,10):
  33.         a = requests.get('https://checkip.amazonaws.com/').text
  34.         print(f'第 {x+1} 次 IP:{a}')

  35.         time1 = time.time()
  36.         #这里随便请求一个网站测试连接
  37.         # b = requests.get('http://acgboy.gitee.io/').text
  38.         b = requests.get('https://www.tool77.com/').text
  39.         time2 = time.time()
  40.         total_scrappy_time = total_scrappy_time + time2 - time1
  41.         print(f'第 {x+1} 次抓取网页花费时间:{time2 - time1}')

  42.         time3 = time.time()

  43.         # 发出一个NEWNYM的信号,更换ip
  44.         controller.signal(Signal.NEWNYM)

  45.         time.sleep(5)
  46.         time4 = time.time()
  47.         total_changeIP_time = total_changeIP_time + time4 - time3 -5
  48.         print(f'第 {x+1} 次更换IP花费时间:{time4 - time3 -5}')
  49.         print('*'*20)

  50.     print('平均抓取花费时间:',total_scrappy_time/10)
  51.     print('平均更换IP花费时间:',total_changeIP_time/10)

  52. # check()
  53. changeIP()
复制代码
Tor浏览器


1.png


Tor的三次跳转


2.png

代码演示


3.png

4.png



回复

使用道具 举报

发表于 2023-6-29 01:26:27 | 显示全部楼层
李志敏 2023-6-29 01:26:27 看全部
论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
回复

使用道具 举报

发表于 2023-6-29 17:06:33 | 显示全部楼层
井底燕雀傥 2023-6-29 17:06:33 看全部
论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
回复

使用道具 举报

发表于 2023-6-30 01:19:54 | 显示全部楼层
掌舵的鱼1987 2023-6-30 01:19:54 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
回复

使用道具 举报

发表于 2023-6-30 13:38:36 | 显示全部楼层
塞翁364 2023-6-30 13:38:36 看全部
论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
回复

使用道具 举报

发表于 2023-7-3 09:44:07 | 显示全部楼层
素色流年783 2023-7-3 09:44:07 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
回复

使用道具 举报

发表于 2023-7-3 20:53:20 | 显示全部楼层
123456865 2023-7-3 20:53:20 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
回复

使用道具 举报

发表于 2023-7-3 22:21:02 | 显示全部楼层
123456809 2023-7-3 22:21:02 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-7-4 21:04:02 | 显示全部楼层
我的苦恼冉 2023-7-4 21:04:02 看全部
楼主,大恩不言谢了!知鸟论坛是最棒的!
回复

使用道具 举报

发表于 2023-7-4 22:17:09 | 显示全部楼层
向往草原403 2023-7-4 22:17:09 看全部
论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
回复

使用道具 举报

  • 您可能感兴趣
点击右侧快捷回复 【请勿灌水】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

RSS订阅| SiteMap| 小黑屋| 知鸟论坛
联系邮箱E-mail:zniao@foxmail.com
快速回复 返回顶部 返回列表