У меня есть сервер FASTAPI, который подключает и выполняет запросы к веб -сайту текстов Genius.com через его библиотеку TricsERIUS . Но так как гений требует ключа API для подключения к нему, и я не хочу, чтобы мой ключ был украден, я решил разместить сценарий в веб -службе, а затем позвонить его оттуда, чтобы я мог выпустить только фронт для публики (в приложении для настольного компьютера) без ключа. Проблема заключается в том, что гений, кажется, отвергает мои запросы, когда они приходят с хостинского сервера, то есть они возвращают 403 с огромным HTML-кодом, который, по мнению Copilot, является своего рода защитой CAPTCHA или против BOT от CloudFlare. Однако, если я запускаю сервер локально и делаю запросы оттуда, он работает просто отлично. Я пытаюсь сделать что -то, что намеренно запрещено, или есть способ, которым я смогу достичь этого? Вот пример кода моего сервера: < /p>
import os
import json
import sys
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
from pydantic import BaseModel
import lyricsgenius
app = FastAPI()
GENIUS_ACCESS_TOKEN = os.getenv("GENIUS_TOKEN")
if GENIUS_ACCESS_TOKEN:
# I tried adding an user_agent to modify the headers so Cloudflare doesnt think that I am a bot, but it seems not to work
genius = lyricsgenius.Genius(
GENIUS_ACCESS_TOKEN,
remove_section_headers=True,
skip_non_songs=False,
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
)
else:
print("Fatal error: genius could not be started")
sys.exit(1)
async def buscar_cancion(cancion: Cancion):
letra = ''
error = ''
try:
# Here is where it fails
song_genius = genius.search_song(cancion.titulo, cancion.artista)
# ...
except Exception as e:
# ...
print(e)
return ...
async def process_song_list(canciones: list[Cancion]):
for cancion in canciones:
resultado = await buscar_cancion(cancion)
yield json.dumps(resultado) + '\n'
@app.post("/api/procesar")
async def procesar(canciones: Payload):
return StreamingResponse(process_song_list(canciones.items), media_type="application/json")
Подробнее здесь: https://stackoverflow.com/questions/797 ... can-be-don
Размещенный скрипт блокируется внешними веб -сайтами по запросам, но они могут быть сделаны локально ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему PrintOptions.page_height Selenium игнорируется некоторыми веб-сайтами?
Anonymous » » в форуме Python - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-