Git Product home page Git Product logo

Comments (5)

Vinlic avatar Vinlic commented on September 17, 2024

来源和延伸阅读可能会占据过多的篇幅,暂时没有提供,想要获得这些信息,你可以在receiveStream和createTransStream中捕获,如果你可以修改的话欢迎PR这个功能。
too_many_request目前未遇见,如果你的服务器在国外,可能遭遇黑名单。

from metaso-free-api.

jhw0510 avatar jhw0510 commented on September 17, 2024

来源和延伸阅读可能会占据过多的篇幅,暂时没有提供,如果你希望获得,可以在receiveStream和createTransStream中捕获 too_many_request目前未遇见,如果你的服务器在国外,可能遭遇黑名单。

好的,谢谢大佬

我的服务器两台阿里云的,一台学校的,我用我自己的代码不知道为啥,请求完之后显示响应码是200,然后text是'data:[TOO_MANY_REQUESTS]\n\n\n\ndata:[DONE]\n\n'
下面是我的代码,大佬能帮我看看吗,要是不方便就算啦,主要是就很奇怪,明明本地可以用,锁ip也不至于阿里云的也全锁了吧。。。

`import json
import re
import requests
def mita_chat(query):
token = 'wr8+pHu3KYryzz0O2MaBSNUZbVLjLUYC1FR4sKqSW0rERqkSdjevgxp8EI5jHM5WjC2qL5r/AwXd/Hu4nl2qPzH0m7Mw93LNYK8sW+CJnI04geDzvCVTCdd/P1DDj86Zu9sahbUSutdAqN9IGJuE7A=='
cookies = {
'JSESSIONID': '5B2751B1344B59BA4EB39A1DD60CAEEE',
'AMP_MKTG_c1c8da453c': 'JTdCJTIycmVmZXJyZXIlMjIlM0ElMjJodHRwcyUzQSUyRiUyRmNuLmJpbmcuY29tJTJGJTIyJTJDJTIycmVmZXJyaW5nX2RvbWFpbiUyMiUzQSUyMmNuLmJpbmcuY29tJTIyJTdE',
'AMP_c1c8da453c': 'JTdCJTIyZGV2aWNlSWQlMjIlM0ElMjIxODhlYWUxMC0zMjY4LTQ2YmEtYTMzYS0xZTJhNTkzZDQ2NDIlMjIlMkMlMjJ1c2VySWQlMjIlM0ElMjI2NDZlMTEwYWQ4ZGJlMWJmOTA5N2FmZjIlMjIlMkMlMjJzZXNzaW9uSWQlMjIlM0ExNzEyNTYyNDYzOTUxJTJDJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJsYXN0RXZlbnRUaW1lJTIyJTNBMTcxMjU2MjQ4OTYwMiUyQyUyMmxhc3RFdmVudElkJTIyJTNBNDclMkMlMjJwYWdlQ291bnRlciUyMiUzQTElN0Q',
}
headers = {
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="8"',
'Accept': 'application/json, text/plain, /',
'sec-ch-ua-mobile': '?0',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0',
'token': token,
'Origin': 'https://metaso.cn',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Referer': 'https://metaso.cn/search/8469895147684831232',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
json_data = {
'question': query,
'mode': 'detail',
}
response = requests.post('https://metaso.cn/api/session', cookies=cookies, headers=headers, json=json_data)
# print(response.text)
id=response.json()['data']['id']
print(id)

headers = {
    'Connection': 'keep-alive',
    'Pragma': 'no-cache',
    'Cache-Control': 'no-cache',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="8"',
    'accept': 'text/event-stream',
    'sec-ch-ua-mobile': '?0',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0',
    'token': token,
    'Origin': 'https://metaso.cn',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Dest': 'empty',
    'Referer': 'https://metaso.cn/search/8469895147684831232',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}
import urllib.parse
base_url = 'https://metaso.cn/api/searchV2'
session_id = id
question = query
lang = 'zh'
mode = 'detail'
is_mini_webview = '0'
token = token

# 对参数进行URL编码
encoded_question = urllib.parse.quote(question)
encoded_token = urllib.parse.quote(token)
# 构建完整的URL
url = f'{base_url}?sessionId={session_id}&question={encoded_question}&lang={lang}&mode={mode}&is-mini-webview={is_mini_webview}&token={encoded_token}'
response = requests.get(url, cookies=cookies, headers=headers)    
#会在这里请求完报错,报错为'data:[TOO_MANY_REQUESTS]\n\n\n\ndata:[DONE]\n\n'
res=''
for item in response.text.splitlines():
    try:
        res+=json.loads(item[len("data:"):])['text']
    except:
        pass
cleaned_res = re.sub(r"\[\[(\d+)\]\]", r"[\1]", res)
links = []
# 处理link和resultId
content_str = response.content.decode('utf-8')
# 将数据按换行符分割成单独的块
data_blocks = content_str.split('\n\n')
# 循环处理每个数据块
for block in data_blocks:
    if block.strip():  # 确保块不为空
        # 解析JSON数据
        try:
            json_data = json.loads(block.replace('data:', ''))    
            # 检查数据块类型
            if 'resultId' in json_data:
                resultId = json_data['resultId']
                links = json_data['list']
                print(f'resultId: {resultId}')
                print(links)
        except:
            pass
result_list = []
# 重新排序列表并添加序号和换行符
for index, item in enumerate(links, start=1):
    result_list.append(f'[{index}] {item["title"]}: {item["link"]}')

return cleaned_res, result_list

if name == "main":
cleaned_res, result_list = mita_chat(query='你好')
print(cleaned_res, result_list)`

from metaso-free-api.

Vinlic avatar Vinlic commented on September 17, 2024

@jhw0510 如果你是自行逆向的,这个token是一直在变动的,它和你的ip关联,你需要在每次请求前从页面中提取token用于请求,否则你会获得too many requests。
请参考本仓库的实现:

async function acquireMetaToken(token: string) {

from metaso-free-api.

jhw0510 avatar jhw0510 commented on September 17, 2024

@jhw0510 如果你是自行逆向的,这个token是一直在变动的,它和你的ip关联,你需要在每次请求前从页面中提取token用于请求,否则你会获得too many requests。 请参考本仓库的实现:

async function acquireMetaToken(token: string) {

明白了,谢谢大佬,非常感谢您!!

然后修改本项目的话,实在不好意思,我不太会typescript,就会用python :(

from metaso-free-api.

Vinlic avatar Vinlic commented on September 17, 2024

@jhw0510 好的,没关系 :D

from metaso-free-api.

Related Issues (13)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.