yt-dlp «Sign in to confirm you're not a bot» deyapti — serverda nima qilish kerak
Noutbukda yt-dlp YouTube'ni bemalol yuklaydi. O'sha buyruqni VPS'ga ko'chiring — deyarli har videoda «Sign in to confirm you're not a bot» javobini olasiz. Bu xabar nimani anglatadi, datacenter manzilidan nimani o'lchadik va uning o'rnini bosadigan API chaqiruvi qanday — shu yerda.
Yangilangan
Xato aslida nima deydi
YouTube'ning player endpointi oqim ma'lumotini berishdan bosh tortdi va kirilgan sessiya so'radi. yt-dlp shuni uzatadi va cookie taklif qiladi, chunki o'z tomonidan qo'sha oladigan yagona narsa — sessiya. Video ochiq; so'rov videoga yetmasdanoq rad etildi.
Terminal$ yt-dlp https://www.youtube.com/watch?v=aqz-KE-bpKQ ERROR: [youtube] aqz-KE-bpKQ: Sign in to confirm you're not a bot. Use --cookies-from-browser or --cookies for the authentication. See the yt-dlp FAQ for how to manually pass cookies.
Sabab vosita emas, manzil
O'z quvurimizni qurishdan oldin o'lchadik: Hetzner manzilidan 16 ta tasodifiy ochiq video — yt-dlp'ning standart klientlari bilan 0/16 (hamma joyda ishlaydigan bitta mashhur video — anomaliya, signal emas). O'sha binar YouTube ishonadigan chiqish manzili orqasida: 22/22. Datacenter diapazonlari butunlay bot deb baholanadi; yechim biror flag emas.
Nega cookie — tinim bilmas yugurish
Brauzer sessiyasini eksport qilish bugun ishlaydi. Keyin YouTube cookie'ni kelgan IP va qurilmaga bog'laydi, almashtiradi va serverdan yuzlab yuklashni ko'rgach akkauntni belgilaydi. Oxiri bir martalik akkauntlar, PO-token generatorlari va proksilar navbatini yuritasiz — bu yuklash buyrug'i emas, skreping operatsiyasi.
Birinchi qadam: video nima taklif qiladi
Havola bilan bitta GET. Javob har variantni baytdagi aniq hajmi bilan, sarlavha, davomiylik va thumbnail bilan sanaydi — yt-dlp -F ning siz haqiqatan ishlatgan qismi. Havolalar hali yo'q: bu chaqiruv 2 kredit va keshlash xavfsiz.
Terminalcurl -s "https://api.saveapi.org/v1/youtube/info" \ -H "Authorization: Bearer sk_live_xxxx" \ -G --data-urlencode "url=https://www.youtube.com/watch?v=dQw4w9WgXcQ"
Ikkinchi qadam: kerakli variantni yasash
O'sha havola va ro'yxatdagi sifatni bering. Javob — MP4 (yoki M4A/MP3) ni biz tomondan oqim qiladigan imzolangan havola, filename, file_size va muddati bilan. Oqim ataylab biz orqali o'tadi: YouTube media URL'ini so'ragan IP'ga imzolaydi, shuning uchun xom havola sizning serveringizda 403 qaytarardi.
Terminalcurl -s "https://api.saveapi.org/v1/youtube/create" \ -H "Authorization: Bearer sk_live_xxxx" \ -G --data-urlencode "url=https://www.youtube.com/watch?v=aqz-KE-bpKQ" \ --data-urlencode "quality=720p"
Python'da bir zumda almashtirish
Kodingiz yt-dlp'dan fayl olib keyin nimadir qilgan bo'lsa, shartnoma o'sha: havolani bering, olib keladigan URL oling. Yo'qotadiganingiz — bestvideo+bestaudio kabi format selektorlari; oladiganingiz — qaror qilishdan oldin aniq hajm va qarab turadigan bot devorining yo'qligi.
Pythonimport httpx
API = "https://api.saveapi.org/v1/youtube"
HEADERS = {"Authorization": "Bearer sk_live_xxxx"}
def youtube_link(url: str, quality: str = "720p") -> dict:
"""Instead of yt-dlp -f: list the renditions, then build one."""
info = httpx.get(f"{API}/info", params={"url": url},
headers=HEADERS, timeout=30).json()
if not info["success"]:
raise RuntimeError(info["error"]["code"])
available = {f["quality"] for f in info["formats"]}
if quality not in available:
quality = info["formats"][-1]["quality"] # highest one this video has
made = httpx.get(f"{API}/create", params={"url": url, "quality": quality},
headers=HEADERS, timeout=60).json()
if not made["success"]:
raise RuntimeError(made["error"]["code"])
return made # url, filename, file_size, expiresBoshlashdan oldingi savollar
- yt-dlp uy internetidan YouTube'ni hali ham yuklaydimi?
- Odatda ha. Devor manzil sinfiga qaraydi; brauzerga o'xshash klientli rezidensial IP ko'pincha o'tadi. Yiqiladigan joy — server, botlar va backendlar esa aynan serverda ishlaydi.
- API mening YouTube akkauntim yoki cookie'imni ishlatadimi?
- Yo'q. So'rov — havola va API kalitingiz. Sizning akkauntingiz aralashmaydi va almashtirib turadigan narsa yo'q.
- Bitta video qancha turadi?
- info va create birga 12 kredit — $9 paketda bu bir yuklashga sentning taxminan o'ndan biri. YouTube'ning o'zi rad etgan havola 0.1 kredit; biz tomondagi nosozlik bepul.
Bu yerda ishlatilgan platformalar
Boshqa qo'llanmalar
Qo'llanmani o'z kalitingiz bilan ishga tushiring
Kalit bir daqiqada. 1 000 bepul kredit, kartasiz, muddatsiz.