使用Python配置Tor

VSole2022-08-17 08:56:15

背景介绍:

如果你曾经写过网络爬虫,那么你一定遇到过因生成过多请求而被对方服务器阻止的问题,或者你只是想隐藏真实 IP 地址并自动化运行你的脚本。

本文将解释如何在 Linux 系统上配置 TOR,以及如何使用 Python 脚本实现 TOR 以隐藏你的真实 IP 并绕过基于 IP 的限制。

TOR是个啥?

“Tor是洋葱路由器(The Onion Router)的简称,是一款免费开源的匿名通信软件。”Tor网络是一种安全的加密协议,可以确保网络上数据和通信的私密性。

Tor 服务/浏览器使用称为洋葱路由的技术,洋葱路由器是一种点对点 (P2P) 覆盖网络,使用户能够匿名浏览互联网,通过网络发送信息的来源和目的地可以利用洋葱路由使用多层加密实现隐藏

TOR 网络通常需要使用 TOR 浏览器访问,但如果你想在 Python 脚本中使用它并通过 TOR 网络运行自动化脚本该怎么办?这正是我们今天这篇文章要讲的!

TOR 安装

首先Tor的安装取决于你的操作系统,官网有详细说明,对于大多数基于 Debian 的操作系统,操作起来基本都非常方便。

sudo apt-get install tor

要启动Tor服务,运行:

sudo service tor start

如果要检查服务是否有效,只需运行如下命令:

curl --socks5 localhost:9050 --socks5-hostname localhost:9050 -s https://check.torproject.org/ | cat | grep -m 1 Congratulations | xargs

如果一切正常,你会看到如下内容:

Congratulations. This browser is configured to use Tor.

使用Python进行配置

安装 Python 相关请求模块,可用于后续 TOR 网络请求发送:

sudo pip3 install requestssudo pip3 install requests[socks]sudo pip3 install requests[security]sudo pip3 install cryptography

使用请求模块:

import requests

可以使用下方命令在没有 Tor 的情况下检查你的 IP 地址:

requests.get('https://ident.me').text

输出的结果会是你的真实 IP 地址。

要在 Python 脚本中使用 TOR 网络,首先需要告诉 Python 使用代理:

proxies = {    'http': 'socks5://127.0.0.1:9050',    'https': 'socks5://127.0.0.1:9050'}

现在,你会得到一个新的 IP 地址:

requests.get('https://ident.me', proxies=proxies).text

获取新身份

我们需要在每次发出新请求时或以固定的时间间隔获取新的 IP 地址,因此我们需要一个名为“Stem”的 Python 模块。

Stem 是 Tor 的 Python 控制器库,有了它我们就可以使用 Tor 的控制协议来编写针对 Tor 进程的脚本。

为了更加匿名,我们可以使用“Fake UserAgent”模块为每个请求生成一个新的用户代理,这两个模块均可使用 pip 安装:

sudo pip3 install stemsudo pip3 install fake_useragent

Tor 控制器还必须配置为请求身份更新。

sudo nano /etc/tor/torrc

将以下内容写入 /etc/tor/torrc 文件中:

ControlPort 9051CookieAuthentication 

然后重新启动 Tor 以使这些修改生效:

sudo seice tor restart

脚本整合

首先,导入所需模块:

import timeimport requestsfrom fake_useragent import UserAgentfrom stem import Signalfrom stem.control import Controller

然后定义代理:

proxies = {    'http': 'socks5://127.0.0.1:9050',    'https': 'socks5://127.0.0.1:9050'}

现在将为 Stem Controller 定义一个 Handler,使用该处理程序,将验证我们的请求并生成信号以获取新 IP 地址:

 with Controller.from_port(port = 9051) as c:        c.authenticate()        c.signal(Signal.NEWNYM)

以下是完整代码:

import timeimport requestsfrom fake_useragent import UserAgentfrom stem import Signalfrom stem.control import Controllerproxies = {    'http': 'socks5://127.0.0.1:9050',    'https': 'socks5://127.0.0.1:9050'}print("Changing IP Address in every 10 seconds....\n\n")while True:    headers = { 'User-Agent': UserAgent().random }    time.sleep(10)    with Controller.from_port(port = 9051) as c:        c.authenticate()        c.signal(Signal.NEWNYM)        print(f"Your IP is : {requests.get('https://ident.me', proxies=proxies, headers=headers).text}  ||  User Agent is : {headers['User-Agent']}")

代码将每10秒生成一个新IP地址,并在每个请求中生成一个新的用户代理。

工具用途

有很多场景可以使用该工具,例如:

  • 在不被阻止的情况下爬取普通 Web 页面
  • 制作暗网爬虫
  • 掩藏 IP 地址
  • 更多功能待你发现…..

So,你学废了么?

pythontor
本作品采用《CC 协议》,转载必须注明作者和本文链接
使用Python配置Tor
2022-08-17 08:56:15
Tor是洋葱路由器的简称,是一款免费开源的匿名通信软件。”Tor网络是一种安全的加密协议,可以确保网络上数据和通信的私密性。Tor 服务/浏览器使用称为洋葱路由的技术,洋葱路由器是一种点对点 覆盖网络,使用户能够匿名浏览互联网,通过网络发送信息的来源和目的地可以利用洋葱路由使用多层加密实现隐藏。
众所周知,Python是一种通用的脚本开发语言,要比其他语言更简单、易学,在学习初期,我们往往会产生各种问题,比如新手如何入门Python?Linux命令:Ubuntu操作系统介绍与使用、Linux命令使用、Linux命令选项的使用、远程登录和远程拷贝、vim编辑器使用、Ubuntu软件安装和软件卸载。
最全的Python开发库!
2022-07-01 08:24:52
Web 框架主要用于网站开发,可以实现数据的交互和业务功能的完善。使用 Web 框架进行 网站开发的时候,在进行数据缓存、数据库访问、数据安全校验等方面,不需要自己再重新实现,而是将业务逻辑相关的代码写入框架就可以。
就需要了解一下名称空间python的名称空间,是从名称到对象的映射,在python程序的执行过程中,至少会存在两个名称空间。python中一切均为对象,均继承于object对象,python的object类中集成了很多的基础函数,假如我们需要在payload中使用某个函数就需要用object去操作。
Instagram-Py是一款针对Instagram账号安全的Python脚本,在该工具的帮助下,广大研究人员可以轻松对目标Instagram账号执行基于爆破的密码安全与账号安全测试。该脚本可以绕过Instagram部署的错误密码登录限制,因此基本上可以测试无限数量的密码。
一款功能强大的现代OSINT信息收集工具
一项名为Dark Utilities的新兴服务已经吸引了 3,000 名用户,因为它能够提供命令和控制 (C2) 服务,以征用受损系统。
安全研究员发现keep、pyanxdns、api-res-py等python模块突然引入了密码窃取模块,仔细一看竟是开发者疏漏。
谁是袭击菲律宾人权联盟卡拉帕坦的大规模和长期分布式拒绝服务 (DDoS) 攻击的幕后推手?
美国、英国、土耳其和菲律宾的组织遭到了网络安全研究人员称之为MortalKombat的新勒索软件的袭击。
VSole
网络安全专家