Kratzen und laden Sie nützliche Informationen von Tiktok herunter.
Dies ist keine offizielle API -Unterstützung und usw. Dies ist nur ein Schaber, der die Tiktok -Web -API verwendet, um Medien und verwandte Meta -Informationen zu kratzen.
Merkmale
Zu tun
Beitrag
Installation
Verwendung
Methoden
Optionen
Verwendung mit Versprechen
Verwendung mit Ereignissen
So erhalten/festlegen Sie den Sitzungswert/fest
So greifen Sie auf das Video zu/herunter
Ausgangsbeispiel
Video -Feed -Methoden
GetUserProfileInfo
Gethashtaginfo
GetVideometa
GetMusicinfo
Bauen
Laufen
Terminalbeispiele
Download -Historie verwalten
Kratzen und Download in Batch
Beispiel für Dateiausgänge
Im Terminal
Docker
Modul
Ab sofort ist es nicht möglich, Video ohne Wasserzeichen herunterzuladen
Laden Sie unbegrenzte Post-Metadaten vom Benutzer, Hashtag, Trends oder Musik-ID-Seiten herunter
Speichern Sie Post -Metadaten in den JSON/CSV -Dateien
Laden Sie Medien mit und ohne Wasserzeichen herunter und speichern Sie die Zip -Datei
Laden Sie ein einzelnes Video ohne Wasserzeichen von der CLI herunter
Sign URL, um die Tiktok -API benutzerdefinierte Anfrage zu stellen
Extrahieren Sie Metadaten vom Benutzer, Hashtag und einzelnen Videoseiten
Speichern Sie den vorherigen Fortschritt und laden Sie nur neue Videos herunter, die zuvor noch nicht heruntergeladen wurden . Diese Funktion funktioniert nur aus der CLI und nur dann, wenn das Download -Flag eingeschaltet ist.
Zeigen und verwalten Sie zuvor heruntergeladene Beiträgeverlauf in der CLI
Kratzen und Download Benutzer, Hashtag, Musik -Feeds und einzelne Videos, die in der Datei im Batch -Modus angegeben sind
CLI: Speichern Sie Fortschritt, um das Herunterladen der gleichen Videos zu vermeiden
Schreiben Sie alles in TypeScript um
Verbesserung der Proxy -Unterstützung
Fügen Sie Tests hinzu
Laden Sie Video ohne Wasserzeichen herunter
Geben Sie in der Ausgabedatei (CSV/JSON) an, ob das Video heruntergeladen wurde oder nicht
Bauen und rennen Sie von Docker aus
CLI: Kratzen und Download in Batch
CLI: Laden Proxys aus einer Datei laden
CLI: Optionales Reißverschluss
API erneuern
Setzen Sie die Webhook -URL (CLI)
Fügen Sie eine neue Methode hinzu, um Musikmetadaten zu sammeln
Fügen Sie manuelle Pagination hinzu
Dokumentation verbessern
Laden Sie Audiodateien herunter
Webschnittstelle
Vergessen Sie keine Tests
Garntest
Garnbau
TIKTOK-SCRAPER benötigt Node.js v10+ zum Ausführen.
Installieren Sie von NPM
npm i -g tiktok -scraper
Aus Garn einbauen
Garn Global Tiktok-Scraper hinzufügen
$ TIKTOK-SCRAPER-HELP Nutzung: Tiktok-SCRAPER <BEFEKTIERUNG> [Optionen] Befehle: TIKTOK-SCRAPER-Benutzer [ID] -Videos aus dem Benutzernamen. Geben Sie nur Benutzernamen ein TIKTOK-SCRAPER Hashtag [id] kratzen Videos von Hashtag. Geben Sie Hashtag ohne # ein TIKTOK-SCRAPER-Trendskratzen von aktuellen Trends abkratzen TIKTOK-SCRAPER MUSIC [ID] -Schraps aus einer Musik-ID-Nummer TIKTOK-SCRAPER VIDEO [ID] Laden Sie ein einzelnes Video ohne Wasserzeichen herunter TIKTOK-SCRAPER-HISTORY View frühere Download History TIKTOK-SCRAPER aus der File [Datei] [Async] Kratzen Sie Benutzer, Hashtags, Musik, Videos, die eine Datei erwähnt haben. 1 Wert pro 1 Zeile Optionen: -Version Show-Versionsnummer [Boolean] -Session Set Session Cookie Value. Manchmal kann die Sitzung sein Hilfreich, wenn Daten aus einer beliebigen Methode abgeschrußt werden [Standard: ""] -SESTEMENT-KEINE-PATH STADT zur Datei mit Liste der aktiven Sitzungen. Eins Sitzung pro Zeile! [Standard: ""] -Timeout Stellen Sie die Zeitüberschreitung zwischen Anfragen fest. Timeout ist in Millisekunden: 1000 mls = 1 s [Standard: 0] -Number, -n Anzahl von Beiträgen zum Kratzen. Wenn Sie 0 festlegen, dann alle Beiträge werden abgekratzt [Standard: 0] -Since Scrape keine Beiträge vor diesem Datum (TimeStamp). Wenn auf 0 gesetzt ist, ist der Filter deaktiviert [Standard: 0] --Proxy, -p Set Single Proxy [Standard: ""] --Proxy-Datei verwenden Proxies aus einer Datei. Der Schaber verwendet zufällige Proxys Aus der Datei pro Anfrage. 1 Zeile 1 Proxy. [Standard: ""] -Herunterladen, -D Download Video -Beiträge mit der Namenseingabe in den Ordner [ID] [Boolean] [Standard: Falsch] --asyncdownload, -a Anzahl der gleichzeitigen Downloads [Standard: 5] -HD Video in HD herunterladen. Die Videogröße ist das X5-X10-mal größere und dies wirkt sich auf die Ausführungsgeschwindigkeit der Schabrik aus. Das Die Option funktioniert nur in Kombination mit -W Flag [Boolean] [Standard: Falsch] --zip, -z Zip Alle heruntergeladenen Videoposts [boolean] [Standard: Falsch] -Filepath-Dateipfad zum Speichern aller Ausgabedateien. [Standard: "/Users/karl.wint/documents/projects/javascript/tiktok-scraper"] -Filetype, -t -Typ der Ausgabedatei, bei der Postinformationen sein werden gerettet. "All" -Speichern Sie Informationen zu allen Beiträgen in den "JSON" und "CSV" [Auswahl: "CSV", "JSON", "All", "] [Standard:"] -Filename, -f Set Benutzerdefinierte Dateiname für die Ausgabedateien [Standard: ""] -Nowatermark, -w Video ohne Wasserzeichen herunterladen. HINWEIS: Mit dem aktuellen Update müssen Sie diese Option nur verwenden, wenn Sie Hashtag -Feeds abkratzen. Benutzer-/Trend-/Musik -Feeds haben diese URL standardmäßig [boolean] [Standard: Falsch] -Store, -S -Schaber speichert den Fortschritt im OS -TMP oder im benutzerdefinierten Ordner und wird in zukünftigen Verwendung nur neue Videos herunterladen, die Duplikate vermeiden [boolean] [Standard: Falsch] -HistoryPath Setzen Sie benutzerdefinierte Pfad, wobei Verlaufsdateien/Dateien gespeichert werden. "Typ: Eingabe" oder "All", um die gesamte Geschichte zu reinigen. Zum Beispiel: Benutzer: Bob [Standard: ""] -Webhookurl setzen Sie die Webhook -URL ein, um das Schaberergebnis als HTTP -Anforderungen zu erhalten. Zum Beispiel zu Ihrer eigenen API [Standard: ""] -Methode Empfangen Sie Daten in Ihre Webhook -URL als Post- oder Get Request [Auswahl: "Get", "Post"] [Standard: "Post"] -HELP Show Help [ boolean]Examples: tiktok-scraper user USERNAME -d -n 100 --session sid_tt=dae32131231 tiktok-scraper trend -d -n 100 --session sid_tt=dae32131231 tiktok-scraper hashtag HASHTAG_NAME -d -n 100 --session sid_tt= DAE32131231 TIKTOK -SCRAPER MUSIC_ID -D -N 50 -Session SID_TT = DAE32131231 TIKTOK-SCRAPER Video : bob tiktok-scraper history -r alle tiktok-scraper aus file batch_file async_tasks -d
Terminalbeispiele
Download -Historie verwalten
Kratzen und Download in Batch
Durch die Verwendung von Docker können Sie nicht in der Lage sein, -Filepath und -HistoryPath zu verwenden, aber Sie können Volumen ( Hostpfad, in dem alle Dateien gespeichert werden ) mit -V festgelegt werden
Docker Build. -t Tiktok-SCRAPER
Beispiel 1: Alle Dateien einschließlich der Verlaufsdatei werden im Verzeichnis ($ PWD) gespeichert, in dem Sie den Docker ausführen
Docker run -v $ (PWD):/usr/app/files tiktok -scraper user tiktok -d -n 5 -s
Beispiel 2: Alle Dateien einschließlich Verlaufsdatei werden in/user/bla/download gespeichert
Docker run -v/user/bla/downloads:/usr/app/files tiktok -scraper user tiktok -d -n 5 -s
.User (ID, Optionen) // Beiträge von einem bestimmten Benutzer (Versprechen) .Hashtag (ID, Optionen) // Beiträge aus dem Abschnitt Hashtags (Versprechen) .Trend ('', Optionen) // Beiträge aus einem Trends abkratzen Abschnitt (Versprechen) .Music (ID, Optionen) // Posts nach Musik -ID (Versprechen) .UserEvent (ID, Optionen) // Beiträge von einem bestimmten Benutzer (Ereignis) .Hashtagevent (ID, Optionen) // Posts abkratzen Aus dem Abschnitt Hashtag (Ereignis) .TrendEvent ('', Optionen) // Posts aus einem Trends -Abschnitt (Ereignis) .musicevent (ID, Optionen) // Posts nach Musik -ID (Ereignis) .GetUserProfileInfo ('Benutzername', Optionen, Optionen, Optionen, Optionen ) // Benutzerprofilinformationen erhalten. Meta-Informationen, einschließlich Video-URL ohne Wasserzeichen.
const options = {// Anzahl der Beiträge, die kratzen: {int Standard: 20} Nummer: 50, // Posts, die seit diesem Datum veröffentlicht werden: {int Standard: 0} Da: 0, // Sitzung: {String [] Standard: ['']} // Authentifizierter Sitzungs -Cookie -Wert ist erforderlich, um Benutzer/Trends/Musik/Hashtag -Feed // zu einer beliebigen Anzahl von Sitzungen zu kratzen. Jede Anforderung wählt eine zufällige Sitzung aus der ListSession -List: ['Sid_tt = 21312213 '], // Proxy {String [] | String -Standard: ''} // Http Proxy: 127.0.0.1:8080// Socken Proxy: Socks5: //127.0.0.1: 8080 // Sie können Proxies als Array übergeben, und Scraper wählt zufällig einen Proxy aus dem Array an das Array an das Array an das Array an das Array an die Führen Sie die RequestSProxy aus: '', // auf {true} festlegen, um nach Benutzer -ID zu suchen: {boolean Standard: false} by_user_id: false, // Wie viele Beitrag sollten asynchron heruntergeladen werden. Nur wenn {download: true}: {int Standard: 5} asyncdownload: 5, // Wie viele Beitrag sollte asynchron abgekratzt werden: {int Standard: 3} // Die aktuelle Option wird nur mit aktuellen Typen angewendet: Musik und Hashtag/ / Mit anderen Typen ist es immer 1, da jede Anforderung Antwort auf die Tiktok -API den Wert "MaxCursor" bereitstellt //, der zum Senden des nächsten RequestAsyncScraping erforderlich ist: 3, // Dateipfad, bei dem alle Dateien gespeichert werden: {String -Standard : 'Current_dir'} filepath: `current_dir`, // benutzerdefinierte Dateiname für die Ausgabedateien: {String -Standard: ''} Dateiname:` current_dir`, // Ausgabe mit Informationen kann in einem CSV- oder JSON -Dateien gespeichert werden: {{{{{{ String Standard: 'Na'} // 'CSV', um in CSV // 'JSON' zu speichern, um in JSON // 'all' zu speichern, um in JSON und CSV // 'NA' zu speichern, um diesen Stieffiletypen zu überspringen: `na`,,,,, // Setzen Sie benutzerdefinierte Header: Benutzer-agent, Cookie usw. // Hinweis: Wenn Sie Video-Feed oder einzelne Video-Metadaten analysieren, erhalten Sie im Gegenzug {Header} Objekt //, mit dem die Informationen extrahiert wurden und zugreifen können und Video durch empfangene {videourl} Wert herunterladen Sie müssen die gleichen HeadersHeaders verwenden: {'user-Agent': "Blah", Referer: 'https://www.tiktok.com/',cookie: `tt_webid_v2 = 68dssdsd`,,,,,,,, }, // Video ohne Wasserzeichen herunterladen: {boolean Standard: false} // auf true zum Herunterladen ohne Wasserzeichen // Diese Option wirkt sich auf die AusführungsspeedNowatermark aus: false, // Link zum HD -Video erstellen: {boolean Standard: false} // Diese Option funktioniert nur, wenn {Nowatermark} auf {true} hdvideo: false, // verifyfp eingestellt ist, um die Anforderung zu überprüfen und CAPTCHA zu vermeiden, wenn Sie Proxy verwenden wird // mit captcha blockiert // Sie können Ihren eigenen Wert verifizieren, oder Standard (hartcodiert) werden verwendet, um zu verwenden: '', // Haupthost in Tiktok Test enpoint.//, wenn Ihre Anforderungen von Captcha blockiert werden, können Sie es versuchen, es versuchen Verwenden von TIKTOK -Testendpunkten.
Vergessen Sie nicht, den Beispiel -Ordner zu überprüfen
const tiktokscraper = required ('tiktok-scraper'); // Benutzerfeed by Benutzername (async () => {try {const posts = warte tiktokscraper 58ba9e34431774703d3c34e60d5844475; ']}); console.log (Beiträge);} catch (error) {console.log (error);}}) (); // Benutzerfeind von Benutzer -ID // Einige Tiktok -Benutzer -Ids sind größer. Sie müssen die Benutzer -ID als String übergeben (async () => {try {const posts = wartet tiktokscraper }); console.log (posts);} catch (error) {console.log (error);}}) (); // Trending Feed (async () => {try {const posts = warte tiktokscraper.trend (tend (triend '', {Nummer: 100, SessionList: ['Sid_tt = 58ba9e34431774703d3c34e60D58475;']}); console.log (posts);} catch (error) {console.log (error);}}) (); // HaderhtagagagaGaShtagaga; feat (async () => {try {const posts = warte tiktokscraper error) {console.log (error);}}) (); // Erhalten Sie Informationen zum einzelnen Benutzerprofil: Anzahl der Follower und etc // Eingabe - Benutzername // Optionen - nicht erforderlich (async () => {try {trat {const user = wartet tiktokscraper und etc // Eingabe - Hashtag -Name // Optionen - nicht erforderlich (async () => {try {const hashtag = warte Tiktokscraper oder Nicht erforderlich (async () => {try {const videometa = warte tiktokscraper. (Fehler) {console.log (error);}}) ();
const tiktokscraper = required ('tiktok-scraper'); const user = tiktokscraper.userevent ("tiktok", {Nummer: 30}); Benutzer.on ('Daten', json => {// Data in JSON-Format}) ; user.on ('Done', () => {//Completed });Users.on('Error ', error => {// Fehlermeldung}); user.scrape (); const hashtag = tiktokscraper. HashtageVent ("summer", {Nummer: 250, Proxy: 'Socken5: //1.1.1.1: 90'}); on ('Done', () => {//Completed });Hashtag.on('Error ', error => {// Fehlermeldung}); Hashtag.scape ();
Nicht erforderlich
Das sehr häufige Problem besteht darin
Holen Sie sich die Sitzung:
Öffnen Sie https://www.tiktok.com/ in jedem Browser
Melden Sie sich in Ihrem Konto an
Klicken Sie mit der rechten Maustaste -> Inspector -> Networking
Seite aktualisieren -> Wählen Sie eine Anforderung aus, die an den Tiktok -> zu den Abschnitten zur Anfrage -Header -> Cookies gestellt wurde
Finden Sie in Cookies Sid_tt Value. Normalerweise sieht es so aus: SID_TT = 521KKADKASDASKDJ4J213J12J312;
SID_TT = 521KKKADKASDASKDJ4J213J12J312; - Dies ist Ihr authentifizierter Sitzungs -Cookie -Wert, mit dem Sie Benutzer/Hashtag/Musik/Trends -Feed kratzen sollten
Setzen Sie die Sitzung:
CLI :
Beispiel Inhalt /var/bob/sessionlist.txt:
Setzen Sie eine einzelne Sitzung mithilfe von Option -Sitzung . Zum Beispiel -Session SID_TT = 521KKKADKASDASKDJ4J213J12J312;
Setzen Sie den Pfad zur Datei mit der Liste der Sitzungen mithilfe von Option -Session-File . Zum Beispiel -Session-file /var/bob/sessionList.txt
sid_tt=521kkadkasdaskdj4j213j12j312; sid_tt=521kkadkasdaskdj4j213j12j312; sid_tt=521kkadkasdaskdj4j213j12j312; sid_tt=521kkadkasdaskdj4j213j12j312;
Im Modul können Sie die Sitzung festlegen, indem Sie die Option Value SessionList einstellen. Zum Beispiel SessionList: ["Sid_tt = 521kkadkasdaskdj4j213J12J312;", "SID_TT = 12312312312312;"]
Dieser Teil bezieht sich auf die Modulverwendung (nicht mit der CLI)
Der Wert {VideoOurl} ist für den Cookie -Wert {tt_webid_v2} gebeten, der einen beliebigen Wert enthalten kann
Wenn Sie Videos vom Benutzer, Hashtag, Musik, Trendfeed oder einzelnem Video extrahieren, erhalten Sie als Antwort neben den Videometadaten Header -Objekt, das Parameter enthalten, die zum Extrahieren der Daten verwendet wurden. Hier ist der wichtige Teil, um auf Video über {VideoOurl} -Werte auf Video zuzugreifen/herunterzuladen, die Sie für die gleichen {Headers} -Werte verwenden müssen .
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","referer": "https:// www.tiktok.com/","cookie ":" tt_webid_v2 = 68985414108686123 "},
Sie können Ihre eigenen Header mit den {Optionen} übergeben.
const headers = {"user-agent": "bob", "referer": "https://www.tiktok.com/","cookie": "tt_webid_v2 = bob"} getVideometa ('web_video_url', {Headers}}} ) user ('web_video_url', {headers}) hashtag ('web_video_url', {headers}) Trend ('web_video_url', {Headers}) Musik ('web_video_url', {Headers}) // und danach können Sie über Video zugreifen, durch {VideoOurl} Wert mit den gleichen benutzerdefinierten Headern
Beispielausgabe für die Methoden: Benutzer, Hashtag, Trend, Musik, Uservent, Hashtagevent, MusicEvent, TrendEvent
{Header: {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS x 10_15_5) Applewebkit/537.36 (khtml, wie Gecko) Chrome/86.0.4240.80 Safari/537.36' .tiktok.com/', Cookie:' tt_webid_v2 = 68985414108686123 '}, Collector: [{id:' Video_id ', text:' caption ', createtime:' 1583870600 ', AuthorMeta: {Id:' Benutzer id: 'name:' name: name: name: name: name: name: name: name: name: name: name: name: name: name: name: 'Benutzername', folge: 195, Fans: 43500, Herz: '1093998', Video: 3, Digg: 95, verifiziert: false, privat: false, Signature: 'Benutzer Bio', Avatar: 'avatar_url'}, MusicMeta: {musicId: '6808098113188120838', MusicName: 'Blah Blah', MusicAuthor: 'Blah', Musicoriginal: True, PlayUrl: 'Sound/music_url',}, Covers: {Deckel: 'Cover_url', Ursprung: 'Cover_url', Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, : 'Cover_url'}, ImageRl: 'Image_url', VideoOurl: 'Video_url', VideoOurlnowatermark: 'Video_url_WitHout_The_Watermark', Videoometa: {Breite: 480, Höhe: 864, Verhältnis: 14, Dauer: 14}, diggcount: 2104, Sharecount: Sharecount: Sharecount: Sharecount: Sharecount: Sharecount: 1. Titel: 'Hashtag_Title', Cover: [Array]} ...], heruntergeladen: true} ...], // if {Filetype} und {Download} sind enbable .zip ', json:'/<current_path ]/user_1552963581094.json',csv: '/<current_path ]/user_1552963581094.csv'}
{secUid: 'MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM',userId: '107955',isSecret: false,uniqueId: 'tiktok',nickName: 'TikTok',signature: 'Make Your Day',covers: ['COVER_URL'],coversMedium: ['COVER_URL '], folge: 490, fans: 38040567, Herz:' 211522962 ', Video: 93, verifiziert: true, digg: 29,}
{ChallengeID: '4231', ChallengeName: 'Love', Text: '', Covers: [], Coversmedium: [], Beiträge: 66904972, Ansichten: '194557706433', Iscommerce: False, Splittitle: ''}
{Header: {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) Applewebkit/537.36 (khtml, wie Gecko) Chrome/86.0.4240.80 Safari/537.36' .tiktok.com/', Cookie:' tt_webid_v2 = 689854141086886123 '}, Sammler: [{id:' 68074919848882765062 ', text: Wir starten die #happyathome Live -Stream -Serie heute bei 5PM Pt! 1584992742',authorMeta: { id: '6812221792183403526', name: 'blah' },musicMeta:{musicId: '6822233276137213677',musicName: 'blah',musicAuthor: 'blah'},imageUrl: 'IMAGE_URL',videoUrl: ' Video_url ', VideoOurlnowatermark:' Video_url_WitHout_The_Watermark ', Videometa: {Width: 480, Höhe: 864, Verhältnis: 14, Dauer: 14}, Covers: {Standard:' Cover_url ', Origin:' Cover_url '}, diggcount: 49292, Sharecount: 49292, Sharecount: : 339, PlayCount: 614678, commentcount: 4023, heruntergeladen: Falsch, Hashtags: [],}]}
{music: {id: '6882925279036066566',title: 'doja x calabria',playUrl: 'dfdfdfdf',coverThumb:'dfdfdf',coverMedium:'dfdfdf',coverLarge:'fdfdf',authorName: 'bryce',original: Richtig, PlayToken: 'ffdfdf', keyToken: 'dfdfdfd', audiourlwithcookie: false, privat: false, dauer: 46, Album: '',}, Autor: {id: '683530000409416021', UniqueId: 'MashupsByCyce', Nickname: Nickname: Nickname: Nickname: Nickname: Nickname: 'Bryce', Avatarthumb: 'Dfdfd', Avatarmedium: 'Dfdfdf', Avatarlarger: 'Dfdfdf', Signature: 'Hi ily:) n70k klingt cool tbhn? Folgen Sie meinen Soundcloud & Insta?', verifiziert: false, secuid: ms4wvg3wvg3bjd4wljabjaba.5bjlaMay DZ5JZEXTO0OZOYBQIWWHW5TAG_IM25LKO94DM3K ', Geheimnis: false, ftc: false, relation: 0, openFavorite: false, Kommentare: 0, Duetteetting: 0, StitchSetting: 0, privateAcount: false,}, Statistiken: {Videocount: 361700}, Sharemeta: {Titel:' BryceyouSer | ♬ Doja x Calabria | auf Tiktok ', Desc:' 361.0k Videos - Awesome Short ' +' Videos mit ♬ Doja x calabria ',},};
Lizenz
MIT
Kostenlose Software