在 python 中连接到代理 (SOCKS) 数据库
Connect to Proxy (SOCKS) Database in python
我正在尝试连接到一个需要代理(袜子)才能连接的数据库,如果我手动使用代理连接,我可以连接,但我需要使脚本连接到机器的 代理(袜子) 以实现此 SELECT
脚本
import socket
import socks
import requests
import pymssql
socks.set_default_proxy(socks.SOCKS5, "138.34.133.155", 1080, True, 'user','password')
socket.socket = socks.socksocket
server = '172.43.56.89'
username = 'user'
password = 'password'
database = 'dbname'
conn = requests.get(pymssql.connect(host=server,user=username,password=password,database=database))
cursor = conn.cursor()
cursor.execute("SELECT column FROM table")
row = cursor.fetchall()
conn.close()
for i in row:
print(i)
输出
Traceback (most recent call last): File "connection.py", line 15, in
conn = requests.get(pymssql.connect(host=server,user=username,password=password,database=database))
File "src\pymssql.pyx", line 642, in pymssql.connect
pymssql.OperationalError: (20009, 'DB-Lib error message 20009,
severity 9:\nUnable to connect: Adaptive Server is unavailable or does
not exist (172.43.56.89:1433)\nNet-Lib error during Unknown error
(10060)\n')
如果您不想侵入 pymssql
源代码,可以使用外部工具将所有 TCP 流量重定向到 socks 代理,例如 FreeCap for Windows, RedSocks for Linux and Proximac for macOS。
我认为一个选择是安装一个带端口转发的本地隧道套接字,映射你的数据库端口,就像你的服务器在本地主机上一样。
如果您 运行 在 Unix 计算机上运行 python 脚本,它会非常高效。
类似于这个系统调用(对于 3306
mariaDB):
ssh -L 3306:localhost:3306 user@x.x.x.x
首先,你的 运行 SSH,然后,你告诉他启用从 3306
端口到你通过 [=14 连接的服务器的 localhost:3306
端口的端口转发=].
有了这个,来自您 local machine:3306
的每个查询都会发送到您的 MariaDB:3306
服务器,让您可以像在服务器上一样使用它。
我正在尝试连接到一个需要代理(袜子)才能连接的数据库,如果我手动使用代理连接,我可以连接,但我需要使脚本连接到机器的 代理(袜子) 以实现此 SELECT
脚本
import socket
import socks
import requests
import pymssql
socks.set_default_proxy(socks.SOCKS5, "138.34.133.155", 1080, True, 'user','password')
socket.socket = socks.socksocket
server = '172.43.56.89'
username = 'user'
password = 'password'
database = 'dbname'
conn = requests.get(pymssql.connect(host=server,user=username,password=password,database=database))
cursor = conn.cursor()
cursor.execute("SELECT column FROM table")
row = cursor.fetchall()
conn.close()
for i in row:
print(i)
输出
Traceback (most recent call last): File "connection.py", line 15, in conn = requests.get(pymssql.connect(host=server,user=username,password=password,database=database)) File "src\pymssql.pyx", line 642, in pymssql.connect pymssql.OperationalError: (20009, 'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (172.43.56.89:1433)\nNet-Lib error during Unknown error (10060)\n')
如果您不想侵入 pymssql
源代码,可以使用外部工具将所有 TCP 流量重定向到 socks 代理,例如 FreeCap for Windows, RedSocks for Linux and Proximac for macOS。
我认为一个选择是安装一个带端口转发的本地隧道套接字,映射你的数据库端口,就像你的服务器在本地主机上一样。
如果您 运行 在 Unix 计算机上运行 python 脚本,它会非常高效。
类似于这个系统调用(对于 3306
mariaDB):
ssh -L 3306:localhost:3306 user@x.x.x.x
首先,你的 运行 SSH,然后,你告诉他启用从 3306
端口到你通过 [=14 连接的服务器的 localhost:3306
端口的端口转发=].
有了这个,来自您 local machine:3306
的每个查询都会发送到您的 MariaDB:3306
服务器,让您可以像在服务器上一样使用它。