兜兜转转,如果绕过限制访问HiveSQL

HiveSQL是包含Hive区块链所有数据的一个MS SQL Server 数据库,是我认为HIVE上最有价值的项目之一。

94a50e6c-e12e-465e-b2ca-8914222707d6.webp
(图片由ChatGPT协助生成)

通过HiveSQL可以查询很多有价值的数据,比如说都谁没有设置我成为他的见证人代理也没投我见证人票,都谁没有给我的帖子投票,然后画个圈圈哦,不对,是拿个小本本记下来。

哈哈,开个玩笑,不过谁知道这玩笑到底是真是假呢,毕竟红楼梦中有句话假做真时真亦假,无为有处有还无

扯远了,话说好长一段时间以来,O哥都没法正常使用HiveSQL数据库,也不知道是服务者封杀了来自国内的IP,抑或是墙封杀了HiveSQL的IP?反正对我而言结果是一样,那就是没法用。

其实也不是完全没有办法,比如说我可以随便找台VPS,然后在VPS上使用Python脚本来访问到HiveSQL,虽然不方便,但是也能做些查询。

2084039c-05b9-4513-95c2-ad2b3f5677d9.webp
(图片由ChatGPT协助生成)

前几天突发奇想,既然很多工具,包括浏览器都可以使用Socks5代理,那我何不试试让LINQPad(我使用的SQL 客户端)也通过代理访问呢?

结果各种搜索后,得出结论——没法在LINQPad中设置代理,它就不支持这个功能,所以这条路根本就行不通。

于是我又想,是不是可以在Python代码中直接使用代理呢?那样的话,我就可以在本机上使用代码通过代理访问HiveSQL了,貌似这个思路靠谱呀?

为了快速地得到方案,我把这个问题丢给AI,分别丢给了ChatGPT和DeekSeek,两者都信誓旦旦地给了我代码,稍有不同,但是貌似听着都挺靠谱的。

于是开干,ChatGPT给出的方案核心是:

import socks
import socket
import pymssql

socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 1111)
socket.socket = socks.socksocket

至于使用pymssql访问mssql数据库,倒没啥区别了。

DeekSeek给的方案,和上述方案略有区别,核心代码如下:

import pyodbc
socks_proxy = 'socks5://127.0.0.1:1111'  

import os
os.environ['HTTP_PROXY'] = socks_proxy
os.environ['HTTPS_PROXY'] = socks_proxy

然后使用pyodbc访问MSSQL数据库,相应的Python代码也一堆,就不贴了。

结果我用上述两个方案分别试过之后,就没有一个能工作的。

20f36f64-9cea-4d43-b19d-b3382a6d26d6.webp
(图片由ChatGPT协助生成)

然后我分别在上述两组代码前加入如下测试代理的代码:

import requests
response = requests.get("http://httpbin.org/ip")
print(response.text)

如果代理设置生效,就会分别打印出本机的外网IP,以及代理的IP。原本可能代理设置的会有问题,结果测试发现,代理如同期待的那样正常工作,可是访问MSSQL的代码就是不起作用,这是为啥呢?

又问了一下AI,回答如下:

由于pymssql 库是用 Cython 实现的,它并未使用 Python 的 socket 模块,因此无法通过修改 socket.socket 来使其通过 SOCKS 代理。 因此,直接在 pymssql 中配置 SOCKS 代理是不可行的。

听起来挺有道理的,不过接下来又建议我用pyodbc实现,代码嘛,就是DeepSeek给的代码,不用说,当然不会好用了。

然后又问它们怎么办,结果就不断地给我在pymssqlpyodbc中来回给我切换,就算明确地告诉它们这两种方案都行不通,它们还在执拗地告诉我其中一种方案,头大。

我觉得,如果继续和它纠缠下去,他大概能给我车轱辘话说上几天、几月、甚至几年,果断放弃吧。

那么我这种情况有没有办法使用到HiveSQL呢?在VPS上不算,VPN或许是一种方案,但是我没买过任何商业的VPN,自己弄的几天就坏掉。

想来想去,何不用SSH转发呢?既然用SSH可以弄Socks代理,我直接把HiveSQL服务器地址转发到本机(Localhost),岂不就完美解决了?

最终使用类似如下代码,打通了一条SSH隧道:
ssh -L 1433:sql_server_ip:1433 user@ssh_server_ip -N

其中sql_server_ip换成HiveSQL的Server地址(vip.hivesql.io),然后把ssh_server_ip换成自己VPS的IP,搞定。

然后,在代码中把相应的IP地址换成127.0.0.1 无论是在代码中用pymssql还是pyodbc都可以正常连接和使用啦。

1b618986-2a09-4533-9b9c-ab1e0c733935.webp
(图片由ChatGPT协助生成)

不过,当我搞定这个SSH隧道之后,我突然想到,既然可以这样用,我为啥还要直接用代码呢?用LINQPad它不香嘛?哈哈哈哈。

所以饶了一大圈,还是用LINQPad吧,真香!至于AI,我在纠结以后代码问题还问它不问它呢?大概还是要问的,只能仅供参考吧!

还有就是,尽管AI没帮我搞定代码,但是也让我学到了代码中使用socks proxy的两种方法(requests可用),也不算一点收获都没有呢。

相关链接

Sort:  

😀只看懂了前面的几段话 哈哈哈~

哈哈
表妹又谦虚

居然没想到还是SQL呢,以前没仔细看过文档,以为是mongodb之类的NoSQL呢
我倒是测试用前端nextjs搞静态渲染绕过。

目前到来,感觉能问AI的代码问题反而是那些比较抽象,概念那类的东西。问某个想法是否能实现,大概需要什么手段,目前有没有类似可参考的资料,或是已投入使用的案例,这类的。问得针对一点,直接要求代码的,一向来都不是很能的样子……

目前的世界,编程还是要人脑电脑并用~

人脑+AI
1 + 1 > 2

看来deepseek要“学习”的地方还很多啊,哈哈。

👍🏻👍🏻对我太难,只能给O.哥点赞😃😃

虽然看不懂里面的代码,但是我还是细看了两遍,最后得到的结果是:哈哈,AI没处理了,还是O哥自己搞定了👍

看到O哥文章提到見證代理人,忽然發現很久前的設定失效了,剛好提醒我再次把O哥設為見證人^^

O哥旅游时候,还专研代码

O哥O大神!😎😎😎
@tipu curate 7