HomeBlogTranscribePlansAPI Keys

youtube-transcript-api estetty? IP-kieltojen korjaaminen AWS/GCP:ssä

Python jäljitys, joka näyttää IpBlocked-virheen youtube-transcript-api:sta pilvessä toimivassa palvelimessa

Skripti toimi täydellisesti kannettavallasi viikkoja. Sitten otat sen käyttöön — Lambda, EC2-sarja, Cloud Run, Heroku dyno, ei ole väliä — ja jokainen yksittäinen youtube-transcript-api-kutsu kuolee nyt:

youtube_transcript_api._errors.IpBlocked:
Could not retrieve a transcript for the video ...
YouTube is blocking requests from your IP.

Tai saman seinän selainasussa "Kirjaudu sisään vahvistaaksesi, että et ole botti." Mikään koodissasi ei muuttunut. Kirjasto ei ole rikki. IP-osoitteesi on ongelma.

Miksi se rikkoutuu vain tuotannossa

youtube-transcript-api toimii hakemalla kuvatekstin tiedot samalla tavalla kuin YouTube-soitin — ei API-avainta, vain HTTP-pyyntöjä YouTubeen. YouTube sallii tämän asuntoyhteyksistä, mikä on miksi paikallinen kehittäminen tuntuu hyvältä. Mutta AWS:n, GCP:n, Azuren ja Herokun IP-alueet ovat julkista tietoa, ja YouTube haastaa massiivisen liikenteen näistä ASN:istä. Sillä ei ole väliä, että olet tekemässä kolmea pyyntöä päivässä; lohko on verkon naapurustossa, ei sinun käyttäytymisessä. Käynnistä instanssi uudelleen, hanki uusi elastinen IP, ota toiminto käyttöön uudelleen — laskeutu toiseen osoitteeseen samasta estetystä poolista.

Tämän sisäistäminen on arvoista, koska ensimmäinen vaisto (lisää uudelleenyrityksiä, lisää viiveitä, kierrä käyttäjäagentteja) ei auta. Signaali, jota YouTube avaimet, on siitä, mihin paketit tulevat.

Korjaus 1: ajaa omia asuntojen välityspalvelimia

Kirjasto tukee tätä suoraan — se lähettää WebshareProxyConfig ja GenericProxyConfig mille tahansa palveluntarjoajalle. Reitita pyynnöt asuntojen IP-osoitteiden kautta ja lohkot pysähtyvät enimmäkseen. Se todella toimii; se on kuinka kaikki, joka kaavitsee YouTubea mittakaavassa, selviävät.

Rehellinen kustannus-laskeminen, vaikka:

Jos olet jo ajamassa välityspalvelimen infrastruktuuria muussa kaavinnassa, tämän liittäminen on kohtuullista. Jos transkriptiot ovat ainoa, mitä tarvitset, olet rekisteröitymässä välityspalvelimen laivastoon, jotta voit tukea yhden funktion kutsua.

Korjaus 2: kutsu päätepiste, joka jo taisttelee tätä taistelua

youtube2text.org tekee asuntojen välityspalvelimen kierron palvelinpuolella, joten pilvifunktiosi tekee yhden tyhjän HTTPS-pyynnön tavalliseen API:iin. Siirtyminen on melkein etsi-ja-korvaa.

Ennen:

from youtube_transcript_api import YouTubeTranscriptApi

transcript = YouTubeTranscriptApi().fetch(video_id)
text = " ".join(snippet.text for snippet in transcript)

Jälkeen:

import requests

r = requests.get(
    "https://youtube2text.org/api/transcribe",
    params={"url": video_id},          # full URLs work too
    headers={"x-api-key": "yt_YOUR_KEY"},
)
text = r.json()["result"]["content"]

Jos haluat kokeilla ennen tilin luomista, hanki jaettu demonäppäin — curl -s https://youtube2text.org/api/demo-key — joka sallii 5 videota/kuukausi per IP. Virheet tulevat takaisin strukturoiduksi JSON:ksi koodein, joiden kanssa on arvoinen käsitellä: TRANSCRIPT_UNAVAILABLE (404) tarkoittaa, että videolla todella ei ole kuvatekstejä — ei lohkoa ja ei ole välityspalvelin korjaa sitä; RATE_LIMIT_EXCEEDED (429) sisältää uudelleenyritys-vihjeen. Täydellisempi Python-selitys on Python-integrointioppissa.

Mikä korjaus on sinulle oikea

Oma avaimesi (erillään jaetusta demonäppäimestä) vie Google-kirjautumisen youtube2text.org/app/keys — ilmainen taso on 5 videota/kuukausi, maksulliset paketit 5,99 dollarista/kuukausi 50 videolla rajoittamattomaan 19,99 dollariin. Ei puhelinnumeroa, ei korttia ilmaiseksi tasoksi.