我正在创建一个Python3爬行器,它抓取Tor隐藏服务以获取有用数据。我使用psycopg2库将这些数据存储在一个PostgreSQL数据库中。目前,爬行器脚本和数据库托管在同一网络上,因此它们之间的通信没有问题。但是,我计划将数据库迁移到VPS上的远程服务器上,以便我可以让一组用户从多个远程位置运行爬行器脚本,所有用户都为同一数据库做出贡献。例如,我可以在家里运行脚本,我的朋友可以从他的VPS运行它,我的教授可以从大学实验室的几个不同的系统运行脚本,所有这些单独的系统都可以与我的远程VPS上运行的PostgreSQL服务器同步。
如果我简单地打开数据库VPS以接受来自任何地方的连接,使数据库成为公共数据库,这将是非常简单的。但是,出于安全原因,我不想这样做。我知道我可以通过SSH建立连接隧道,但这需要为每个人提供一个用户名和密码,以允许他们访问服务器本身。我不想这样做。我更喜欢简单地授予他们对数据库的访问权限,而不是授予shell帐户的访问权限。
我倾向于限制到本地系统127.0.0.1的连接,并为数据库创建一个Tor隐藏服务.onion地址,这样我的远程爬虫客户端就可以通过Tor连接到数据库.onion。
问题是,我不知道如何使用psycopg2通过代理连接到远程数据库。我可以连接到远程数据库,但我看不到任何通过代理连接的选项。
有谁知道这可能是怎么做的吗?
发布于 2018-02-04 05:36:58
如果我只需打开数据库VPS以接受来自任何地方的连接,这将非常简单
这就是你的问题所在。只需使用fail2ban和ufw锁定您的VPS即可。创建一个ufw角色,只允许从你想要访问的IP地址连接到你的Postgres端口到该VPS ip地址。
这样,您不会向任何人开放您的Postgres端口(从*开始),而是只向您控制的一个或多个特定的其他服务器开放。这就是你怎么做的。不要运行洋葱服务来连接Postgres内容,因为这只会使事情变得复杂,并减慢对Postgres数据库的读取,我假设API最终会消耗这些数据来获取您将抓取的“有用数据”。
我希望这至少给你指明了正确的方向。你的问题很笼统,所以我的回答也是一样的。
https://stackoverflow.com/questions/48480183
复制相似问题