首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到python中的代理(SOCKS)数据库

连接到python中的代理(SOCKS)数据库
EN

Stack Overflow用户
提问于 2019-10-23 14:53:29
回答 2查看 3.7K关注 0票数 7

我正在尝试连接到一个需要代理(socks)才能连接的数据库,如果我手动使用代理连接,我可以连接,但是我需要让脚本连接到机器的proxy (socks)来生成这个SELECT

脚本

代码语言:javascript
复制
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)

输出

追溯(最近一次调用):文件"connection.py",第15行,在conn = requests.get( pymssql.connect (host=server,user=username,password=password,database=database))文件"src\pymssql.pyx“中,第642行,在pymssql.connect pymssql.OperationalError中:(20009,'DB-Lib错误消息20009,严重性9:\n无法连接: Adaptive不可用或不存在(172.43.56.89:1433)\n nNet在未知错误(10060)\n‘中的Lib错误

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-28 22:57:55

我认为一种选择是安装一个带有端口转发的本地隧道sock,映射您的数据库端口,并将您的服务器设置为本地服务器。

如果您在Unix计算机上运行python脚本,那么它是非常有效的。

类似于这样的系统调用(对于3306 mariaDB):

代码语言:javascript
复制
ssh -L 3306:localhost:3306 user@x.x.x.x

首先,运行SSH,然后告诉他启用从3306端口转发到通过user@IP连接的服务器的localhost:3306端口的端口。

这样,您的local machine:3306中的每个查询都将发送到您的MariaDB:3306服务器,使您可以像在服务器上的位置一样使用它。

票数 2
EN

Stack Overflow用户

发布于 2019-10-28 18:01:07

如果您不想黑入pymssql源代码,有一些外部工具可以通过socks代理重定向所有TCP流量,例如FreeCap for Windows、RedSocks for Linux和羟肟酸 for macOS。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58525651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档