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

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:
- Raha: asuntojen kaistanleveys kustannuksiltaan noin 3–8 dollaria/GB palveluntarjoajasta riippuen, ja kunnollisilla palveluntarjoajilla on kuukausittaiset sitoumukset — realistisesti 30–100 dollaria/kuukausi ennen kuin olet hamuuttanut mitään. Jokainen transkriptio-haku on pieni (muutama sata KB), joten kaistanleveys ei ole kipu; minimiarvot ja tilin ylimääräiset ovat.
- Tekniikka: omistit kierron, uudelleenyritys-kielto-logiikan ja valvonnan. Asuntojen IP-osoitteita myös haastetaan, vain harvemmin, joten sinun on silti havaittava viat ja reitittää uudelleen.
- Jatkuva huomio: YouTube muuttaa asioita. Välityspalvelimen asetukset, jotka toimivat maaliskuussa, tarvitsevat huolenpitoa kesäkuussa.
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
- Pysy youtube-transcript-api + omissasi välityspalvelimissasi jos haat tuhansia transkriptioita päivittäin, sinulla on jo välityspalvelimen tilit ja sinulla on joku omistaa asetuksen. Tällä äänenvoimakkuudella per-GB hinnoittelu voi lyödä per-video hinnoittelua.
- Siirry isännöityyn päätteeseen jos transkriptiot ovat ominaisuus, ei tuotteesi. Yksi HTTP-kutsu, JSON ulos, ja lohko-ongelma on jonkun muun pagerissa.
- Kumpikaan ei korjaa puuttuvia kuvatekstejä. Videoille, jotka palauttavat
TRANSCRIPT_UNAVAILABLE, varasuunnitelma on puheesta tekstiin — katso Whisper vs YouTube-kuvatekstit sille, milloin se on kannattavaa. Ja jos olit aikeissa kokeilla yt-dlp:tä, ole tietoinen, että se osuu samaan IP-lohkoon datakeskuksen osoitteista.
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.