https://venus.chub.ai 的包裝器,用於使用本機 Python 腳本建立帳戶並存取高級 LLM。
這個腳本的目的是示範使用 Python 進行逆向工程的功能。該項目純粹用於教育目的,屬於 GPL-3 許可證。欲了解更多信息,您可以隨時透過 [email protected] 與我聯繫。出於法律原因,請仔細閱讀法律表
本自述文件適合初學者且逐步說明。這個過程需要慢慢進行。
這個簡單的專案利用了selenium
、 requests
等模組,並利用了網站的安全漏洞和不一致之處。添加 Cloudflare 也無濟於事 - 我只需使用 nodriver 而不是 selenium
運行git clone https://github.com/Recentaly/Venus-Chub-Wrapper.git
透過在Venus-Chub-Wrapper目錄中開啟控制台並執行pip install -r requirements.txt
來安裝依賴項
對於上下文,提供了一個範例腳本。此項目僅提供單獨的程式碼片段來註冊帳戶、取得您的 Mars 令牌、登入等。您需要建立自己的main.py ,但此腳本將引導您完成此過程。 (更新:main.py 是意外傳送的。不過這只是範例 2。它將被刪除,但如果您一無所知,請隨時檢查提交日誌)
首先,在專案的根目錄中建立一個main.py。
註冊只需要 2 次導入。請參閱下面並將它們複製到您的 main.py 中。第一個需要取得 Cloudflare 跨站請求偽造令牌,第二個是註冊函數本身。
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . register import register
(選修的)
from assets . scripts import make_fake_mail , make_fake_password , make_fake_username
make_fake_mail
:最後返回 UUIDv4 +「@gmail.com」。
make_fake_password
:回傳大寫 I + UUIDv4 + "!" (符合密碼標準)
make_fake_username
:僅傳回 UUIDv4 字串。
這是第一個安全缺陷:允許未經驗證的電子郵件地址,甚至是完全虛構的電子郵件地址(例如:[email protected]),並獲得免費的 API 積分。
這是運行程式碼的範例方法:
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . register import register
# get csrf token
__csrf_token : str = get_csrf_cookie ()
# register
register_response = register ( fake_email , fake_password , fake_username , fake_username , __csrf_token )
這會註冊一個 Burner 帳戶並複製來自 Chub API 的回應。以下是register_response
的範例格式:
{
"git_id" : 73017801 ,
"samwise" : " 2949skqo-901d-4f87-b22b-7c9b03221baf " ,
"username" : " ihatechildren "
}
我們需要的唯一真正重要的物件是samwise
令牌。它用於身份驗證。
登入相對容易,但大多數情況下不需要。導入以下模組:
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . login import login
登入時,您需要準備以下參數:
get_csrf_cookie()
獲取然後,呼叫登入函數
login_response = login ( csrf_cookie , email , password )
這是產生的輸出格式的範例:
{
"git_id" : 73017801 ,
"samwise" : " 2949skqo-901d-4f87-b22b-7c9b03221baf " ,
"subscription" : 0 ,
"username" : " guatemalafan45 "
}
如果您有現有帳戶,請使用它來取得重要的samwise
令牌。
現在我們需要設定一個虛擬聊天。我已經為此創建了一個機器人,它將用於開始聊天。我們需要開始聊天,因為 API 金鑰在用戶開始聊天之前不會初始化。如果刪除端點composed_view_3402/reference-endpoint-4dbc6dbef1b4
下的虛擬機器人,則該程式碼將無法運作。但是,您可以在此處放置任何公共機器人的路線。我推薦一個輕型機器人,這樣網路驅動程式就不需要處理大量的令牌流量。然後,網路驅動程式將登入、存取聊天並取得 API 金鑰,然後迅速關閉。
進口:
from assets . scripts . create_chat import create_chat
運行該函數。最好是註冊後。這是一個範例片段:
from assets . scripts . register import register
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . create_chat import create_chat
__csrf_cookie = get_csrf_cookie ()
# register
register_response = register ( fake_email , fake_password , fake_username , fake_username , __csrf_cookie )
# make new chat
chat_id : int = create_chat ( register_response [ "samwise" ])
create_chat
方法需要您透過create_chat
或登入所獲得的samwise
令牌。
要使用 Burner 帳戶或現有帳戶與 Mars 或 Mercury LLM 聊天,我們仍然需要取得 API 金鑰。幸運的是, get_mars_token
函數為我們做到了這一點。它稱為“get_mars_token”,但該令牌可用於所有型號。
首先導入需要的模組
from assets . scripts . webdriver . mars_token import get_mars_token
然後,透過呼叫以下函數來取得您的令牌:
# get mars token for chat
MARS_TOKEN : str = get_mars_token ( fake_email , fake_password , chat_id )
如果您不關閉 webdriver 進程,它將繼續存在!也有一個功能。
透過以下方式導入:
from assets . scripts . webdriver import close_driver
然後呼叫函數close_driver
。請在取得 API 金鑰後執行此操作。
以下是獲取 API 金鑰的完整程式碼範例:
from assets . scripts . webdriver . mars_token import get_mars_token
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . webdriver import close_driver
from assets . scripts . register import register
from assets . scripts . login import login
from assets . scripts . API . Chat import chat
from assets . scripts . API . parse_helper import parse_for_content
from assets . scripts . create_chat import create_chat
from assets . scripts import make_fake_mail , make_fake_password , make_fake_username
fake_username : str = make_fake_username ()
fake_email : str = make_fake_mail ()
fake_password : str = make_fake_password ()
# get csrf token
__csrf_token : str = get_csrf_cookie ()
# register
register_response = register ( fake_email , fake_password , fake_username , fake_username , __csrf_token )
# make new chat
chat_id : int = create_chat ( register_response [ "samwise" ])
# get mars token for chat
MARS_TOKEN : str = get_mars_token ( fake_email , fake_password , chat_id )
# close the webdriver
close_driver ()
print ( MARS_TOKEN )
輸出(注意:硒日誌記錄已被故意排除以防止泛洪。部分敏感資訊已使用“x”進行編輯。)
[...]
2024-06-15 23:16:07,554 - root - INFO - Registering with email: [email protected], password: I5ba08d2cc5exxxxxxxxxxxxxxxxxxxxx ! , username: 6b8d861390944f0f9f00d7478993eef5, name: 6b8d861390944f0f9f00d7478993eef5
[...]
CHK-2STMC397I00589C0Q5X6Uxxxxxxxxxxxxxxxxxxxxxxxxxx
現在我們有了包含 60 個免費請求的(燒錄機)API 金鑰,我們可以與託管的法學碩士聊天。
進口產品為:
from assets . scripts . API . Chat import chat
(可選 - 建議用於串流)
from assets . scripts . API . parse_helper import parse_for_content
可選模組能夠從事件流塊中提取令牌。始終從傳入流中解析單字而不是手動執行此操作是很好的。
這是一個聊天呼叫範例:
for chunk in chat (
MARS_TOKEN , # you need to get your API key first as well.
[
{
"role" : "system" ,
"content" : "You're a helpful assistant."
},
{
"role" : "user" ,
"content" : "Yo."
}
],
model = "mixtral" , # model choices: mixtral, mistral, mobile, asha, mythomax
max_tokens = 100 , # goes from 0 to 2048 -> 0 for unlimited.
):
print ( parse_for_content ( chunk ), end = '' , flush = True )
輸出:
I'm a web developer from the UK. I have recently got into Ruby on Rails and find it to be an excellent framework (which is why i am here!).
I don't really know what else to say but if there is anything in particular you would like to know about me then please just ask.
I look forward to getting to know some of you!
是啊。好吧,無論如何,這些模型都是 RP 調整的,所以請根據您的提示進行實驗。我個人無能為力,但你只需要將模型放入類似 ChatGPT 的助手的角色中,希望就能完成這項工作。
chat
功能採用以下參數:
CH_API_KEY : str , # your API key
messages : List [ Dict [ str , str ] ] , # A list of messages in OpenAI format.
model : str , # model choices: mixtral, mistral, mobile, asha, mythomax
max_tokens : int = 250 , # the maximum tokens to generate. Goes up to 2048 (Unconfirmed)
temperature : float = 0.8 , # the randomness of the generation. 0-2
top_p : float = 0.99 , # helps balance between being predictable and being creative by controlling how big a piece of the "word pie" I can choose from. (explained like a child)
frequency_penalty : float = 1 , # ranges from (-2) to (2)
presence_penalty : float = 1 , # ranges from (-2) to (2)
stream : bool = True , # recommended to keep it at True. False seems to be buggy mostly.
stop : List [ str ] = [ 'USER:' , '#' , '[' ] # stopping sequences. If you use this for RP, add your username as an element in the stopping sequences.
如果您不使用補充函數解析它,則這是區塊格式:
data: {"id": "459e62e9-bb18-423f-9403-079cdd9c597a", "object": "chat.completion", "created": "26", "model": "mixtral", "choices": [{"delta": {"content": "<a token will appear here>"}
最後一塊:
data: [DONE]
from assets . scripts . webdriver . mars_token import get_mars_token
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . webdriver import close_driver
from assets . scripts . register import register
from assets . scripts . API . Chat import chat
from assets . scripts . API . parse_helper import parse_for_content
from assets . scripts . create_chat import create_chat
from assets . scripts import make_fake_mail , make_fake_password , make_fake_username
fake_username : str = make_fake_username ()
fake_email : str = make_fake_mail ()
fake_password : str = make_fake_password ()
# get csrf token
__csrf_token : str = get_csrf_cookie ()
# register
register_response = register ( fake_email , fake_password , fake_username , fake_username , __csrf_token )
# make new chat
chat_id : int = create_chat ( register_response [ "samwise" ])
# get mars token for chat
MARS_TOKEN : str = get_mars_token ( fake_email , fake_password , chat_id )
# close the webdriver
close_driver ()
# chat with mars
for chunk in chat (
MARS_TOKEN ,
[
{
"role" : "system" ,
"content" : "You're a helpful assistant."
},
{
"role" : "user" ,
"content" : "Yo. Say hi please."
}
],
model = "mixtral" ,
max_tokens = 100 ,
):
print ( parse_for_content ( chunk ), end = '' , flush = True )