Mengikis dan mengunduh informasi yang berguna dari Tiktok.
Ini bukan dukungan API resmi dan dll. Ini hanya pengikis yang menggunakan API Web Tiktok untuk mengikis media dan informasi meta terkait.
Fitur
Untuk melakukan
Kontribusi
Instalasi
Penggunaan
Metode
Opsi
Gunakan dengan janji
Gunakan dengan acara
Cara mendapatkan/mengatur nilai sesi
Cara mengakses/mengunduh video
Contoh output
Metode umpan video
getUserProfileInfo
gethashtaginfo
getVideoMeta
getMusicInfo
Membangun
Berlari
Contoh Terminal
Kelola riwayat unduhan
Mengikis dan mengunduh dalam batch
Contoh file output
Di terminal
Buruh pelabuhan
Modul
Sampai sekarang tidak mungkin untuk mengunduh video tanpa tanda air
Unduh Metadata Posting Tidak Terbatas dari Pengguna, Tagar, Tren, atau Halaman Musik-ID
Simpan Metadata Posting ke file JSON/CSV
Unduh media dengan dan tanpa tanda air dan simpan ke file zip
Unduh video tunggal tanpa tanda air dari CLI
Tandatangani URL untuk membuat permintaan khusus ke API Tiktok
Ekstrak metadata dari pengguna, tagar dan halaman video tunggal
Simpan kemajuan sebelumnya dan hanya unduh video baru yang belum diunduh sebelumnya . Fitur ini hanya berfungsi dari CLI dan hanya jika bendera unduhan aktif.
Lihat dan kelola riwayat posting yang diunduh sebelumnya di CLI
Mengikis dan mengunduh pengguna, tagar, umpan musik, dan video tunggal yang ditentukan dalam file dalam mode batch
CLI: Simpan kemajuan untuk menghindari mengunduh video yang sama
Tulis ulang semuanya dalam naskah
Tingkatkan dukungan proxy
Tambahkan tes
Unduh video tanpa tanda air
Tunjukkan dalam file output (CSV/JSON) jika video diunduh atau tidak
Membangun dan lari dari Docker
CLI: Mengikis dan mengunduh dalam batch
CLI: Muat proxy dari file
CLI: Zip opsional
Perbarui API
Atur webhook url (CLI)
Tambahkan metode baru untuk mengumpulkan metadata musik
Tambahkan pagination manual
Tingkatkan dokumentasi
Unduh file audio
Antarmuka web
Jangan lupa tentang tes
tes benang
Bangun benang
Tiktok-Scraper membutuhkan Node.js V10+ untuk dijalankan.
Instal dari NPM
npm i -g tiktok -scraper
Instal dari benang
Benang Tambahkan Tiktok-Scraper Global
$ tiktok-scraper --help Penggunaan: Tiktok-Scraper <command> [opsi] Perintah: Pengguna Tiktok-Scraper [ID] Mengikis video dari nama pengguna. Masukkan hanya nama pengguna Tagtag Tiktok-Scraper [ID] Mengikis video dari tagar. Masukkan tagar tanpa # Tiktok-Scraper Trend Scrape Posts dari tren saat ini Tiktok-Scraper Music [ID] Mengikis posting dari nomor ID musik video tiktok-scraper [id] Unduh video tunggal tanpa watermark Tiktok-Scraper History Lihat Sejarah Unduh Sebelumnya Tiktok-scraper dari file [file] [async] Mengikis pengguna, tagar, musik, video yang disebutkan dalam file. 1 nilai per 1 baris Opsi: --Version Tampilkan Nomor Versi [Boolean] -Sesi Set Sesi Nilai Cookie. Terkadang sesi bisa bermanfaat saat mengikis data dari metode apa pun [default: ""] -Session-File Set Path ke File dengan Daftar Sesi Aktif. Satu Sesi per baris! [bawaan: ""] -Timeout menetapkan batas waktu antara permintaan. Batas waktu dalam milidetik: 1000 mls = 1 s [default: 0] --number, -n Jumlah posting untuk mengikis. Jika Anda akan mengatur 0 maka semuanya Posting akan dikikis [default: 0] --SECE SCRAPE TIDAK ADA POST yang diterbitkan sebelum tanggal ini (cap waktu). Jika diatur ke 0 filter ditonaktifkan [default: 0] --proxy, -p atur proxy tunggal [default: ""] --Proxy-File menggunakan proxy dari file. Scraper akan menggunakan proxy acak dari file per setiap permintaan. 1 baris 1 proxy. [bawaan: ""] -Download, -D Unduh posting video ke folder dengan input nama [id] [boolean] [default: false] --AsyncDownload, -sa jumlah unduhan bersamaan [default: 5] -HD Unduh video dalam HD. Ukuran video akan menjadi x5-x10 kali lebih besar dan ini akan mempengaruhi kecepatan eksekusi scraper. Ini Opsi hanya berfungsi dalam kombinasi dengan bendera -W [boolean] [default: false] --zip, -z zip semua posting video yang diunduh [boolean] [default: false] -Path File-FilePath untuk menyimpan semua file output. [default: "/users/karl.wint/documents/projects/javascript/tiktok-scraper"] - -filetype, -t Jenis file output di mana informasi posting akan berada disimpan. 'all' -simpan informasi tentang semua posting ke` 'json' dan 'csv' [pilihan: "csv", "json", "all", ""] [default: ""] --filename, -f set Nama file khusus untuk file output [default: ""] ---nowatermark, -W Unduh video tanpa watermark. Catatan: Dengan pembaruan terbaru, Anda hanya perlu menggunakan opsi ini jika Anda mengikis umpan tagar. Umpan pengguna/tren/musik akan memiliki URL ini secara default [boolean] [default: false] --store, -s scraper akan menyimpan kemajuan dalam OS TMP atau folder khusus dan dalam penggunaan di masa mendatang hanya akan mengunduh video baru yang menghindari duplikat [boolean] [default: false] --historypath mengatur jalur kustom di mana file/file riwayat akan disimpan [default: "/var/folder/d5/fyh1_f2926q7c65g7skc0qh80000gn/t"] - -remove, -rape catatan sejarah oleh Entering "Ketik: input" atau "semua" untuk membersihkan semua sejarah. Misalnya: pengguna: bob [default: ""] --webhookurl mengatur url webhook untuk menerima hasil scraper sebagai permintaan http. Misalnya ke API Anda sendiri [default: ""] --Thod menerima data ke URL webhook Anda sebagai posting atau mendapatkan permintaan [pilihan: "get", "post"] [default: "Post"] --help show help [ BOOLEAN] Contoh: Tiktok -Scraper pengguna nama pengguna -d -n 100 -sesi sid_tt = dae32131231 Tiktok -scraper tren -d -n 100 --session sid_tt = DAE32131231 Tiktok -SCRAPER HASHTAG HASHTAG_NAME -D -D -N 100 -SIF -SCRAPER HASHTAG HASHTAG_NAME -D -D -N 100 -SIF -SCRAPER HASHTAG HASHTAG_NAME -D -D -NAMA DAE32131231 Tiktok -Scraper Music Music_id -d -n 50 --Session Sid_tt = DAE32131231 Tiktok -SCRAPER Video https://www.tiktok.com/@tiktok/video/6807449191988888827665065066262626262626262650626 : Bob Tiktok-Scraper History -r Semua Tiktok-Scraper dari file batch_file async_tasks -d
Contoh Terminal
Kelola riwayat unduhan
Mengikis dan mengunduh dalam batch
Dengan menggunakan Docker, Anda tidak akan dapat menggunakan - -filepath dan --historypath, tetapi Anda dapat mengatur volume ( jalur host di mana semua file akan disimpan ) dengan menggunakan -v
Docker Build. -T Tiktok-Scraper
Contoh 1: Semua file termasuk file riwayat akan disimpan di direktori ($ pwd) tempat Anda menjalankan docker dari
Docker run -v $ (pwd):/usr/app/file Tiktok -Scraper pengguna Tiktok -d -n 5 -s
Contoh 2: Semua file termasuk file riwayat akan disimpan di/pengguna/bla/unduhan
Docker run -v/user/bla/unduhan:/usr/app/file tiktok -scraper pengguna tiktok -d -n 5 -s
.USER (ID, Opsi) // Mengikis posting dari pengguna tertentu (janji) .hashtag (id, opsi) // Mengikis posting dari bagian tagar (janji) .trend ('', opsi) // Mengikis posting dari tren bagian (janji) .Music (ID, opsi) // Mengikis Posting oleh Music ID (Promise) .UserEvent (ID, Opsi) // Mengikis posting dari pengguna tertentu (Event) .Hashtagevent (ID, Opsi) // Mengikis Posting Dari bagian tagar (acara) .trendEvent ('', opsi) // Mengikis posting dari bagian tren (acara) .musicEvent (id, opsi) // Mengikis posting oleh ID musik (acara) .getUserProfileInfo ('nama pengguna', opsi ) // Dapatkan informasi profil pengguna.getHashtagInfo ('tagar', opsi) // Dapatkan informasi tagar.signUrl ('url', opsi) // Dapatkan tanda tangan untuk video.getVideoMeta ('web_video_url', opsi) // Video info meta, termasuk URL video tanpa watermark.getMusicInfo ('https://www.tiktok.com/music/original-sound-6801885499343571718', opsi) // Dapatkan musik metadata
opsi const = {// Jumlah posting untuk mengikis: {int default: 20} nomor: 50, // Mengikis posting yang diterbitkan sejak tanggal ini: {int default: 0} Sejak: 0, // Set sesi: {string [] Default: ['']} // Nilai cookie sesi yang diautentikasi diperlukan untuk mengikis pengguna/tren/musik/feed tagar // Anda dapat menempatkan di sini sejumlah sesi, setiap permintaan akan memilih sesi acak dari ListSessionList: ['sid_tt = 21312213 '], // atur proxy {string [] | String default: ''} // http proxy: 127.0.0.1:8080// socks proxy: socks5: //127.0.0.1: 8080 // Anda dapat meneruskan proxy sebagai array dan scraper akan secara acak memilih proxy dari array ke ke array ke ke array Jalankan RequestsProxy: '', // Setel ke {true} untuk mencari berdasarkan ID pengguna: {boolean default: false} by_user_id: false, // berapa banyak posting yang harus diunduh secara tidak sinkron. Hanya jika {unduh: true}: {int default: 5} asyncdownload: 5, // berapa banyak posting yang harus dikikis secara asinkron: {int default: 3} // opsi saat ini hanya akan diterapkan dengan tipe saat ini: musik dan tagar/ / Dengan tipe lain, selalu 1 karena setiap respons permintaan terhadap API Tiktok menyediakan nilai "maxcursor" // yang diperlukan untuk mengirim permintaan berikutnya yang diproduksi: 3, // jalur file di mana semua file akan disimpan: {string default : 'Current_dir'} filepath: `current_dir`, // nama file khusus untuk file output: {string default: ''} nama file:` current_dir`, // output dengan informasi dapat disimpan ke file csv atau json: { String default: 'na'} // 'csv' untuk menyimpan di csv // 'json' untuk menyimpan di json // 'semua' untuk menyimpan di json dan csv // 'na' untuk melewatkan tiri ini: `na`, // Atur header khusus: agen pengguna, cookie dan etc // Catatan: Saat Anda menguraikan umpan video atau metadata video tunggal maka sebagai imbalannya Anda akan menerima {header} objek // yang digunakan untuk mengekstrak informasi dan untuk mengakses dan unduh video melalui nilai {videourl} yang diterima Anda perlu menggunakan headersheader yang sama: {'user-agent': "bla", referer: 'https://www.tiktok.com/',cookie: `tt_webid_v2 = 68dssds`, }, // Unduh video tanpa watermark: {boolean default: false} // disetel ke true to download tanpa watermark // opsi ini akan mempengaruhi speedNowatermark: false, // buat tautan ke video hd: {boolean default: false} // Opsi ini hanya akan berfungsi jika {nowatermark} diatur ke {true} hdvideo: false, // verifyfp digunakan untuk memverifikasi permintaan dan menghindari captcha // saat Anda menggunakan proxy maka ada peluang tinggi bahwa permintaan tersebut permintaan tersebut akan // diblokir dengan captcha // Anda dapat menetapkan nilai verifikasi Anda sendiri atau default (hardcoded) akan digunakan veriveifyfp: '', // switch host utama ke Tiktok test enpoint.// saat permintaan Anda diblokir oleh captcha Anda dapat mencoba untuk menggunakan titik akhir tes tiktok.UsetestendPoints: false};
Jangan lupa untuk memeriksa folder contoh
const tiktokscraper = membutuhkan ('tiktok-scraper'); // umpan pengguna oleh username (async () => {coba {const post = menunggu tiktokscraper.user ('nama pengguna', {angka: 100, sessionlist: ['sid_tt = 58BA9E34431774703D3C34E60D584475; ']}); console.log (postingan);} catch (error) {console.log (kesalahan);}}) (); // Umpan pengguna dengan ID pengguna // Beberapa ID Pengguna Tiktok lebih besar kemudian Max. , Anda perlu meneruskan ID pengguna sebagai string (async () => {coba {const post = menunggu tiktokscraper.user (`user_id`, {number: 100, by_user_id: true, sessionlist: ['sid_tt = 58ba9e34431774703c3c3c344444444444444444444444444444444444444444444444444444444444444444444444 }); console.log (postingan);} catch (error) {console.log (error);}}) (); // trene feed (async () => {coba {const post = menunggu tiktokscraper.trend ( '', {number: 100, sessionlist: ['sid_tt = 58ba9e34431774703d3c34e60d584475;']}); console.log (post);} catch (error) {console.log (error);}}) (); feed (async () => {coba {const post = menunggu tiktokscraper.hashtag ('tagar', {angka: 100, sessionlist: ['sid_tt = 58ba9e34431774703d3c34e60d584475;'] (Possole. kesalahan) {console.log (error);}}) (); // Dapatkan informasi profil pengguna tunggal: jumlah pengikut dan etc // input - username // opsi - tidak diperlukan (async () => {coba {const user = menunggu tiktokscraper.getUserProfileInfo ('username', opsi); console.log (user);} catch (error) {console.log (kesalahan);}}) (); // dapatkan informasi tagar tunggal: jumlah tampilan tampilan); dan etc // input - nama tagar // opsi - tidak diperlukan (async () => {coba {const hashtag = menunggu tiktokscraper.gethashtaginfo ('tagar', opsi); console.log (tagar);} catch (kesalahan) {console.log (error);}}) (); // Dapatkan video tunggal metadata // input - web_video_url // misalnya: https://www.tiktok.com/@tiktok/video/680749198488882765062//vide - tidak diperlukan (async () => {coba {const videometa = menunggu tiktokscraper.getVideoMeta ('https://www.tiktok.com/@tiktok/video/680749198882765062', opsi); console.log (videome (videome); (error) {console.log (error);}}) ();
const tiktokscraper = membutuhkan ('tiktok-scraper'); const users = tiktokscraper.userevent ("tiktok", {angka: 30}); users.on ('data', json => {// data dalam format json})) ; Users.on ('Done', () => {//completed});users.on('Error ', error => {// pesan kesalahan}); Users.scrape (); const hashtag = tiktokscraper. hashtagevent ("musim panas", {number: 250, proxy: 'socks5: //1.1.1.1: 90'}); hashtag.on ('data', json => {// data dalam format json}); tagar. on ('done', () => {//completed});hashtag.on('error ', error => {// pesan kesalahan}); hashtag.scrape ();
Tidak diperlukan
Masalah yang sangat umum adalah ketika Tiktok mencantumkan Blacklisting IP/Proxy Anda dan dalam kasus seperti itu Anda dapat mencoba mengatur sesi dan akan ada peluang yang lebih tinggi untuk sukses
Dapatkan sesi:
Buka https://www.tiktok.com/ di browser apa pun
Masuk ke akun Anda
Klik kanan -> Inspektur -> Jaringan
Halaman Refresh -> Pilih Permintaan yang Dibuat ke Tiktok -> Buka Bagian Header Permintaan -> Cookie
Temukan dalam nilai cookie sid_tt . Biasanya terlihat seperti itu: sid_tt = 521kkadkasdaskdj4j213j12j312;
sid_tt = 521kkadkasdaskdj4j213j12j312; - Ini akan menjadi nilai cookie sesi yang Andautentikasi yang harus digunakan untuk mengikis User/Hashtag/Music/Trending Feed
Atur sesi:
CLI :
Contoh konten /var/bob/sessionlist.txt:
Atur sesi tunggal dengan menggunakan opsi -sesi . Misalnya --Session sid_tt = 521kkadkasdaskdj4j213j12j312;
Atur jalur ke file dengan daftar sesi dengan menggunakan opsi --Session-file . Misalnya --Session-File /var/bob/sessionlist.txt
sid_tt=521kkadkasdaskdj4j213j12j312; sid_tt=521kkadkasdaskdj4j213j12j312; sid_tt=521kkadkasdaskdj4j213j12j312; sid_tt=521kkadkasdaskdj4j213j12j312;
Dalam modul Anda dapat mengatur sesi dengan mengatur Nilai Opsi Sesi Sesi. Misalnya sessionlist: ["sid_tt = 521kkadkasdaskdj4j213j12j312;", "sid_tt = 12312312312312;"]
Bagian ini terkait dengan penggunaan modul (bukan CLI)
Nilai {videourl} diikat ke nilai cookie {tt_webid_v2} yang dapat berisi nilai apa pun
Saat Anda mengekstrak video dari pengguna, tagar, musik, umpan tren atau video tunggal kemudian sebagai tanggapan selain metadata video Anda akan menerima objek header yang akan berisi Params yang digunakan untuk mengekstrak data. Berikut adalah bagian penting, untuk mengakses/mengunduh video melalui {videourl} nilai Anda perlu menggunakan nilai {header} yang sama .
Header: {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, Like Gecko) Chrome/86.0.4240.80 Safari/537.36", "Referensi": " www.tiktok.com/","cookie ":" tt_webid_v2 = 689854141086886123 "},
Anda dapat melewati header Anda sendiri dengan {options} .
const headers = {"user-agent": "bob", "referer": "https://www.tiktok.com/","cookie": "tt_webid_v2 = bob"} getVideoMeta ('web_video_url', {{{{} ) user ('web_video_url', {header}) hashtag ('web_video_url', {header}) trend ('web_video_url', {header}) musik ('web_video_url', {headers}) // dan setelah video web_video_url ', {{}) // dan sesudah mengakses video through through through through through through {{{{ {videourl} nilai dengan menggunakan header khusus yang sama
Contoh output untuk metode: pengguna, tagar, tren, musik, userevent, hashtagevent, musicevent, trendevent
{Headers: {'User-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, Like Gecko) Chrome/86.0.4240.80 Safari/537.36', Referensi: 'HTTPS:/530 WW/537.36', HTTPS: 'WW: 537. .tiktok.com/', cookie:' tt_webid_v2 = 689854141086886123 '}, kolektor: [{id:' video_id ', teks:' Caption ', createTime:' 1583870600 ', authormeta: {id:' ID ', nama pengguna:' 'UserName', berikut: 195, Penggemar: 43500, hati: '1093998', Video: 3, Digg: 95, Diverifikasi: Salah, Pribadi: Salah, tanda tangan: 'Pengguna Bio', Avatar: 'Avatar_Url'}, MusicMeta: {MusicId: '6808098113188120838', MusicName: 'bla bla', musicAuthor: 'bla', musicoriginal: true, playurl: 'sound/music_url',}, sampul: {default: 'cover_url', asal: 'dinam', dinam : 'Cover_url'}, ImageUrl: 'Image_Url', videourl: 'Video_url', VideourLowatermark: 'Video_url_without_the_watermark', Videometa: {width: 480, Tinggi: 864, rasio: 14, durasi: 14}, Diggcount: 2104, 864, rasio: 14, durasi: 14}, Diggcount: 2104, ShareCount: 464, Rasio: 14, durasi: 14}, Diggcount: 2104, ShareCount: 464, Ratio: 14, Duration: 14}, DiggCount: 2104, ShareCount: 464, Ratio: 14, Duration: 14}, DiggCount: 2104, ShareCount: 864, Ratio: 14, Duration: 14}, Diggcount: 210 1, PlayCount: 9007, CommentCount: 50, menyebutkan: ['@bob', '@sam', '@bob_again', '@and_sam_again'], tagar: [{id: '69573911', nama: 'playwithlife', Judul: 'Hashtag_title', sampul: [array]} ...], diunduh: true} ...], // if {filetype} dan {unduhan} opsi enbable lalu: zip: '/{current_path}/user_1552963581094 .zip ', json:'/{current_path}/user_1552963581094.json',csv: '/{current_path}/user_1552963581094.csv'}
{secuid: 'ms4wljabaaav7isuuxdjgdvjkmh_vz1qkdzyo1apxgzaxdbseiUpim', userid: '107955', issecret: false, unikid: 'tiktok', julukan: 'Tiktok', condokan: 'Tiktok', njok nama: 'Tiktok', condokan: 'Tiktok', nickname: 'Tiktok', condokan: 'TIKTOK', 'TIKTOK', NOLNAME: 'TIKTOK', TANKURATURE: 'TUKTOK', 'TIKTOK', 'TIKTOK', 'TIKTOK', 'TIKTOK', 'TIKTOK', COVOURED: 'TIKTOUM:' '], berikut: 490, Penggemar: 38040567, hati:' 211522962 ', Video: 93, Diverifikasi: Benar, Digg: 29,}
{ChallengeID: '4231', ChallengeName: 'Love', Text: '', Cover: [], Coversmedium: [], Posts: 66904972, Views: '194557706433', isCommerce: false, splittitle: ''}
{Headers: {'User-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, Like Gecko) Chrome/86.0.4240.80 Safari/537.36', Referensi: 'HTTPS:/530 WW/537.36', HTTPS: 'WW: 537. .tiktok.com/', cookie:' tt_webid_v2 = 689854141086886123 '}, kolektor: [{id:' 6807491984882765062 ', Teks:' Kami memulai seri Live Stream #happyathoMe hari ini di 5pm pt pt! 1584992742 ', authormeta: {id:' 681221792183403526 ', nama:' bla '}, musicmeta: {musicId:' 682233276137213677 ', musicName:' bla ', musik', musik ', musik', musik ', musik', musik ', musik', musik '. Video_url ', videourlnowatermark:' video_url_without_the_watermark ', videometa: {width: 480, tinggi: 864, rasio: 14, durasi: 14}, sampul: {default:' cover_url ', asal:' cover_url '}, Diggcount: 492 : 339, playcount: 614678, CommentCount: 4023, diunduh: false, tagar: [],}]}
{music: {id: '6882925279036066566',title: 'doja x calabria',playUrl: 'dfdfdfdf',coverThumb:'dfdfdf',coverMedium:'dfdfdf',coverLarge:'fdfdf',authorName: 'bryce',original: true,playToken:'ffdfdf',keyToken: 'dfdfdfd',audioURLWithcookie: false,private: false,duration: 46,album: '',},author: {id: '6835300004094166021',uniqueId: 'mashupsbybryce',nickname: 'Bryce', Avatarthumb: 'dfdfd', Avatarmedium: 'dfdfdf', avatarlarger: 'dfdfdf', tanda tangan: 'hi ily :) n70k terdengar keren? Z5jzexto0ozoybqiwwhw5tag_im25lko94dm3k ', Secret: False, FTC: FALSE, Hubungan: 0, OpenFavorite: FALSE, Commentsetting: 0, DuetSetting: 0, Stitchsetting: 0, PrivateAccount: False,}, Stats: {Videocount: 361700}, Sharemeta: {title:' Bryceyouloser | ♬ Doja X Calabria | Di Tiktok ', desc:' 361.0k Video - Tonton video pendek ' +' yang mengagumkan yang dibuat dengan ♬ doja x calabria ',},};
Lisensi
Mit
Perangkat lunak gratis