saveapi.org

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.

Terminal
curl -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.

Terminal
curl -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.

Python
import 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, expires

Boshlashdan 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.

Kalit oling va sinab ko'ringTo'liq API ma'lumotnomasi