Aby było jasne, celem tego postu nie jest, aby Tinder stracił pieniądze i promowanie tego rodzaju zachowania (Wykorzystywanie płatnych funkcji za darmo), w mojej opinii, może to być uznane za miękką wersję piractwa/hakowania niezgodnego z prawem. Ten post to przetłumaczony tekst anglojęzycznego artykułu który znalazłem tutaj . W originale mowa o tym jak za pomocą wiedzy programistycznej i umiejętności nagiąć oraz wykorzystać stronę internetową Tindera z pozycji przeglądarki internetowej. Te sztuczki mogą działać lub nie – post ma tylko cel edukacyjny bo jest to w moje opinii interesujące. Nie jestem autorem dlatego warto zapoznać się z oryginałem który znajdziesz tutaj:https://softwareontheroad.com/reversing-tinder-api-with-nodejs/(nie jestem programistą i moje tłumaczenie może odbiegać od oryginalnego tekstu lub zawierać błedy natury programistyczni-technicznej takiej jak nazewnictwo itd dlatego zachęcam do przeczytania artykułu źródłowego). Nie ponoszą odpowiedzialności za wykorzystaną wiedze;)
Co to jest?
W tym artykule, będę się koncentrować na rzeczach, które znalazłem i pomyślałem, że proces, który przeszedłem w mojej przygodzie z, prawdopodobnie, najpopularniejszą aplikacją randkową czyli Tinder.
Najprawdopodobniej nie pomoże Ci to znaleźć partnera, ale mam nadzieję, że wzbudzi ciekawość, jak to działa za kulisami w aplikacji Tinder.
Jeśli jesteś kimś związanym z Tinder, przeczytaj wniosek na dole.
Możesz zobaczyć WSZYSTKIE zdjęcia ludzi, którzy lubią cię NIEZAMAZANE patrząc na odpowiedź na prośbę teaserów, która zostaje zwolniona po kliknięciu na przycisk, który otwiera listę osób z tej grupy.
Ale czekaj, kim jesteś?
Cieszę się, że pytasz, jestem Elian Cordoba i jak mój przyjaciel Sam, jestem programistą internetowym, robiąc głównie Angular, Ionic i Node, ale nie boję się ram JS/biblioteki/narzędzia, które jest trendy w momencie czytania tego.
Możesz mnie znaleźć na githubie i skontaktować się ze mną przez e-mail.
Jak się tu znalazłem?
Zawsze staram się węszyć, aby sprawdzić, czy mogę znaleźć interesujące rzeczy, tym razem padło na Tindera. Zacząłem korzystać z wersji internetowej, ponieważ czułem się samotny z jakiegoś powodu wylogowałem się z wersji mobilnej i nie mogłem się zalogować z powrotem (w sieci można to zrobić za pomocą Facebooka).
Po wejściu, przycisk z liczbą osób, które mnie polubiły przykuł moją uwagę (Nie każdy będzie miał to jednak ?).
Po kliknięciu na niego, otworzył stronę z listą osób, ale z haczykiem, ich zdjęcia profilowe były zamazane.
Aby zobaczyć je prawidłowo, trzeba płacić miesięczny abonament.
Przeczytaj również: Jak zachować się na pierwszej randce
Więc pomyślałem, że najprawdopodobniej te zdjęcia już się rozmyły z backendu Tindera, prawda?
Cóż…. nie, są one nieostre i uzyskać efekt w froncie z jednej klasy CSS,
Jest to dość złe rozwiązanie ponieważ każdy może otrzymać jedną z głównych funkcji Tinder’a za darmo całkiem łatwo*.
Nie było to również skomplikowane, aby zapobiec żadnemu z nich**, mogliby oni zapisać rozmyty obraz już wcześniej lub zastosować jego efekt przed wysłaniem go.
Coś tak ostrego może wykonać zadanie w sam raz, zakładając, że używają Node.js dla backendu, jeśli tego nie zrobią, ale nadal lubią ten pakiet, mikrousługa będzie działać dobrze.
Przypadkowo, chwile po odkryciu tego polubiłem kogoś i patrząc na rzeczywistą odpowiedź mogłem zobaczyć jej zdjęcie i później rozpoznaję ją na mojej liście machnięć.
Szczerze mówiąc, to skończyło się na tym, że był to miecz o podwójnych krawędziach, ponieważ dowiedziałem się również, że naprawdę słodka dziewczyna mnie lubi i z jakiegoś powodu, nie lubię jej z powrotem ?
*Nie jest tak dobra jak prawdziwa funkcja, nie można zobaczyć informacji o profilu osoby, takich jak imię i nazwisko lub dane osobowe.
**Zarówno rozwiązania jestem o wspomnieć, jak wiele rzeczy w życiu, mają kompromisy, pierwszy z nich będzie używać więcej pamięci masowej na użytkownika, a także będzie mieć aktualizację, gdy użytkownik aktualizuje swój główny obrazek profilu. Drugi wprowadzi koszty ogólne na odpowiedź, co może być problemem, biorąc pod uwagę liczbę użytkowników, których mają, choć nie wszyscy będą go uruchamiać.
Inną interesującą rzeczą jest to, że wniosek teasers (ten, który dostaje listę osób, które cię polubiły) nie tylko ma adres URL obrazu portretu, ale wszystkie adresy URL ich zdjęć, ała znowu.
Można było temu zapobiec, wykonując projekcję w zapytaniu lub usuwając nieużywane właściwości. Dodatkowe dane* obciążają odpowiedź tak bardzo, że ich waga jest 4 razy większa.
*Szczerze mówiąc, nie jestem w 100% pewien, co jest używane w froncie, ponieważ nie pracuję w Tinder, ale, wiedząc, że wniosek zostaje zwolniony po kliknięciu na przycisk, aby zobaczyć, kto cię polubił i pokazują tylko jedno zdjęcie to bezpieczne, aby założyć, że mogą pominąć wszystkie inne dane.
**Twierdzenie o dodatkową wagę 4x pochodzi z wykonania oryginalnej odpowiedzi (~54 KB) i usunięcia wszystkich innych właściwości oprócz zdjęcia portretowego (ostateczny rozmiar ~11,5 KB).
Przeczytaj również: Jak być atrakcyjnym dla dziewczyny
Daj mi więcej ?
Z tego rodzaju momentem eureka moja i tak już wysoka ciekawość stała się jeszcze większa, następną rzeczą, którą chciałem się dowiedzieć, było to, jak działało machnięcie Tindera.
Po załadowaniu strony żądanie zostaje zwolnione, przynosząc ze sobą tablicę 16 użytkowników (Zwolnione ponownie, jeśli przeciągniesz ich wszystkich). Pamiętaj o tym, wrócimy do tego za chwilę.
Następnie, próbowałem zrobić tak jak i podanie, które były…… GETs…. poważnie? W każdym razie, adresy URL są:
GET - api.gotinder.com/like/ID_PERSON
GET - api.gotinder.com/pass/ID_PERSON
A superlike jest:
POST - api.gotinder.com/like/ID_PERSON/super
Nie znalazłem żadnego narzędzia do przełęczy i superlaike, ale naprawdę dobre dla takich, ponownie, czytaj dalej, nadal potrzebujemy jednego dodatkowego kawałka do rozwiązania jednej z zagadek!
Wygłupiać się z uporczywą pamięcią masową ?
Kolejną użyteczną funkcją Tinder’s premium jest to, że możesz powtórzyć machnięcie, dobrze, że możemy również włamać się, aby uzyskać ten jeden za darmo, korzystając z tego, czego się właśnie nauczyliśmy.
Aby to zrobić, przejdź do pamięci masowej IndexDB, a następnie naciśnij przycisk „keyval”:
Szukaj klucza persist::recs, który będzie miał następującą strukturę:
{
"previouslySwiped": [
{
"id": "5d61ab62a0d7e91610c0b0c6",
"rating": "like",
"timestamp": 1566769731872,
"sNumber": 793832917
},
{
"id": "5c6b475172e7651200a590b2",
"rating": "dislike",
"timestamp": 1566781244135,
"sNumber": 691913683
},
....
]
}
Aby odtworzyć i zmodyfikować dowolne żądanie, przejdź do zakładki Sieć, kliknij je prawym przyciskiem myszy, a następnie Kopiuj jako pobranie. Następnie przejdź do konsoli, wklej ją i naciśnij Enter. Na końcu postu znajduje się gif, który właśnie to robi.
Tak więc, musimy po prostu wziąć identyfikator osoby, którą chcemy się zainteresować i zamieścić go w podobnej prośbie:
fetch(
'https://api.gotinder.com/like/5a94cc13b191566e1c13a85e?locale=en&s_number=489904711',
{
credentials: 'omit',
headers: { ... }, // !important, copy the headers from a recent 'like' request, as they your session data
referrer: 'https://tinder.com/',
referrerPolicy: 'origin',
body: null,
method: 'GET',
mode: 'cors'
}
);
Na marginesie, znalazłem również, że kiedy masz mach* pozwala Ci rozmawiać z tą osobą, klikając na jej profil uruchamiasz zwykły identyfikator.
Jest to przydatne, ponieważ jeśli chcesz ponownie zrobić jak, ale nie jesteś pewien, który ID jest poprawny, z tym możesz to sprawdzić.
fetch('https://api.gotinder.com/user/ID?locale=en', { // The ID goes here
credentials: 'omit',
headers: {...}, // Same thing here as explained in the last last example
referrer: 'https://tinder.com/',
referrerPolicy: 'origin',
body: null,
method: 'GET',
mode: 'cors'
});
To ten piękny moment, kiedy kogoś lubisz i zdarza się, że i ty też. Naprawdę wspaniałe.
Hacking 'zapisz profil’ sekcja ?️
Oczywiście, kiedy możesz zaktualizować niektóre istniejące wartości, istnieje możliwość, że devs nie sprawdzają w backendzie tego, co wysyłasz, więc możesz zmienić ładowność, aby zrobić coś takiego:
{
"firstName": "Elian",
"lastName": "Cordoba",
"account": {
"balance": 9007199254740991 // Gotta stay safe
}
}
Najprawdopodobniej Twoja bankowość domowa ma to pokrycie, ale Tinder nie jest bankowością domową, więc i tak próbowałem.
Odkryłem, że w wersji internetowej Tindera nie można zmienić miasta (w aplikacji mobilnej można), ale można w tym celu edytować ładowność:
Wskazówka:
Możesz tworzyć własne miasta! Uruchom aktualizację profilu, aby skopiować wniosek, a następnie zmodyfikować ładowność.
{
"user": {
"city": {
"name": "Area 51",
"region": "20 september never forget"
}
}
}
Aby być uczciwym, jest to trudne do sprawdzenia, ponieważ zależy od jakiejś biblioteki lub usługi na froncie, aby uzyskać prawidłowe wartości (w tym przypadku najprawdopodobniej Google Map API).
Aby temu zapobiec, musieliby oni również zadzwonić do tej samej usługi w backendzie, aby sprawdzić, czy cokolwiek użytkownik wysyła jest ważne, ale, bądźmy szczerzy, nie sądzę, że tworzenie własnych miast to taka wielka sprawa.
Również numer telefonu jest zapisany jako…. phone_id ¯_(ツ)_/Ż.
Dla zabawy, próbowałem zrobić trochę XSS, ale okazuje się, że mają to przykryte.
Przypadkowe bity
- Rozmawiałem z jedną dziewczyną po maczu i z jakiegoś powodu usunęła wszystkie swoje zdjęcia Nie, to nie dlatego, że ją przeraża, ale miałem skopiować jej profil jako JSON Okay, że mogą być uważane za przerażające i z tego powodu próbowałem uzyskać jeden z jej zdjęć adresów URL i…. nadal tam były. Najprawdopodobniej Tinder ma prawo trzymać je przez jakiś czas (może na zawsze, czytaj zasady i warunki użytkowania, ale to przypomnienie, że zostawiliśmy wiele danych w Internecie, nawet jeśli przestaniemy korzystać z tej strony / aplikacji.
- Super-podobna prośba zostaje zatwierdzona na backendzie Tindera, próbowałem zmodyfikować dane z mojego profilu, aby dodać mi niektóre z tych bonusów, ale również zostaje zatwierdzona.
- Kiedy umieścisz zły kod w kodzie promocyjnym wpisz kod statusu odpowiedzi będzie 500, czy jestem jedynym, który poczuje się jak mikroagresja? Żarty na bok ten jeden ma pewne konsekwencje, jeśli mają jakieś monitorowanie błędów to prawdopodobnie zarejestruje 5XX błędów, więc można wyzwolić kilka alarmów przez spamowanie tego żądania. Nie, nie rób tego.
- Nie możesz lubić siebie ?
- Kiedy ktoś taki jak ty, prędzej niż później napotkasz ich, jeśli z jakiegoś powodu nie chcesz ich ani lubić, ani nie lubić (tchórz) możesz przeładować stronę, nie martw się, że pojawią się ponownie później. Jeśli chcesz być pewien, że po prostu zapisz ich ID, aby móc uruchomić mecz przez konsolę (przykład poniżej).
- Niestety odpowiedź łamigłówki nie przychodzi z identyfikatorem osoby, w przeciwnym razie moglibyśmy odtworzyć w pełni płatną funkcję nie tylko otrzymując zdjęcia, ale również wszystkie ich informacje.
- Aby zwiększyć swoje szanse na poznanie kogoś, możesz spersonalizować skrypt!!11
async function partnerFinder() {
const carefullySelectedCandidates = await fetch(...); // The 'core' request
const ids = carefullySelectedCandidates.data.results.map(user => user._id);
await Promise.all(ids.map(id => fetch(...id))); // The 'like' request
partnerFinder(); // Oh sh*t, here we go again
}
Istnieje 100 like
Wyzwalanie dopasowania z konsoli limit, który nie wydaje się być uruchamiany, jeśli podczas normalnego korzystania z witryny, ale jeśli zrobisz setki wniosków na minutę, najprawdopodobniej zatrzymają cię. Więc połącz to z 'skryptem’ z zadaniem CRON, które uruchamia każdy X* i jesteś gotowy do pracy. Ponadto, będzie lepiej, jeśli zrobisz je jeden po drugim i z pewnym przypadkowym opóźnieniem pomiędzy, wiesz, aby spróbować odwrócić uwagę każdego możliwego prostego DDos lub detektora bot.
*X było tym, co Tinder mówi, że jest to czas resetowania dla tych, którzy lubią.
Wniosek
Przeczytaj również: Co zrobić gdy dziewczyna nie odpisuje?
Aby być jasne, celem tego postu nie jest, aby Tinder stracić pieniądze lub promować tego rodzaju zachowania (Wykorzystywanie płatnych funkcji za darmo), w mojej opinii, może to być uznane za miękką wersję piractwa.
Moim celem było i zawsze będzie nauczenie się, w tym przypadku, poprzez odwrotną inżynierię strony internetowej Tindera, umiejętności, które uważam za bardzo ważne dla rozwoju oprogramowania.
Nie ujawniłem tych ustaleń, ponieważ nie są one związane z bezpieczeństwem, o ile mi wiadomo.
Skończyłem z tym „badawczym” projektem, myślałem o zrobieniu rozszerzenia do automatycznego odsłaniania obrazów lub do autopodobnych ludzi, ale jest to sprzeczne z tym, co powiedziałem w ostatnim akapicie, nie oznacza to, że jeśli ktoś robi coś związanego z tym nie sprawdzę tego, po prostu daj mi znać!
Wreszcie, chciałbym zachęcić wszystkich, aby zawsze starali się zobaczyć, co się dzieje pod maską, zobaczyć jakie prośby i odpowiedzi (Czasami niosą dodatkowe dane, których nie powinno tam być), do źródeł (Strony mogą aktualizować swój kod mapami źródłowymi, ouch), sprawdzić konsolę pod kątem logów i zmiennych, itp.
Lubię o tym myśleć, ponieważ jest to poszukiwanie skarbów, nigdy nie wiadomo, co się znajdzie!
Źródło:https://softwareontheroad.com/reversing-tinder-api-with-nodejs/
Witaj na moje stronie powstała specjalnie by recenzować portale randkowe i pomagać w randkowaniu przez internet jako że w tym wymiarze jest mało takich stron lub ich wiarygodność kończy się na opisie kup „Poradnik samca alfa 101” na tej stronie nie znajdziesz takich rzeczy. Znajdziesz za to wszystkie najlepsze treści za darmo i bez żadnych ograniczeń. Kilka słów o mnie z portalami randkowymi mam już kilka lat doświadczenia. Nie będę kłamał i nie zawsze wychodzi czasem to moja wina czasem ludzie na portalu to nie to czego szukam. Z kobietami lubię się spotykać, rozmawiać robię to dla przyjemności tak by polepszać swoje zdolności nie jestem jakimś Kasanową ale radzę sobie i dlatego chce pomóc wam być również dobrym w te klocki.