oflyhigh avatar

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

oflyhigh

Published: 22 Feb 2025 › Updated: 22 Feb 2025兜兜转转,如果绕过限制访问HiveSQL

兜兜转转,如果绕过限制访问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可用),也不算一点收获都没有呢。

相关链接

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

Written by

Programmer, Maker, Freelancer, Witness. Make friends, Make money, Make life better!

Read more #hive-105017 posts


Best Posts From oflyhigh

We have not curated any of oflyhigh's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From oflyhigh