Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Discord serverių scrapinimas (Metodikos klausimas)


Recommended Posts

(redaguota)

Sveiki,
Noriu nuscrapinti iš interneto didelį kiekį discord serverių informacijos: SnowflakeID, name, description, Iš esmės viską ką galima rasti. Tarp scrapinimo variantų matau https://disboard.org/ ir https://top.gg/, bet pirminiai bandymai rodo, jog tiesiog su python ir requests šnipštas gaunas, requestai gražina 403. (Dėl cloudflare?)

Tiek jei esate, jei neesate tuo užsiėmę, kokie būtų jūsų sekančiai žingsniai sprendžiant šią problemą? Esu linkęs likti prie python, bet ne būtinybė, taip pat esu dirbęs su selenium, tik tokie blogi atsiminimai, kad vargiai noriu prie jo grįžt.

Realiai tiesiog tikiuosi, kad atsiras kažkokia magiška repozitorija arba api kuriuo galėčiau pasinaudot, vietoj to kad eilinį sykį rašyčiau scriptą kuris sulūš po savaitės.

Redaguota , nario Sharunkis
Nuoroda į komentarą
Dalintis per kitą puslapį

Magijos čia nėra ir nebus. Arba ieško gražaus api/site kuris neblokuoja arba bandyk nuscrapinti jau rastus. Būtent kaip tą padaryti nepasakysiu, turėsi atlikti research pats.

Paprasčiausias būdas būtų susirasti, kas gali nuscrapinti duomenis už tave. Tokių paslaugų tiekėjų yra tikrai daug. Taip pat yra paslaugų tiekėjų, kurie "nuomoja" backend'ą scrapinimui, pavyzdžiui https://oxylabs.io/products/web-unblocker.

Sudėtingesnis būdas būtų daryti tą, ką bandei daryti prieš tai. Kartais requestai reikalauja cookių, o kartais specialių headerių. Cloudflare blokavimus apeiti kartais padeda paprasčiausias site užkrovimas su naršykle(ne tik get requestas). Python'ui naršyklių "controllerių" nežinau, bet kalbant apie nodejs jų yra ne vienas: puppeteer, playwright(arba gali naudoti šiek tiek pažįstamą selenium). Net ir pavykus nuscrapinti kelis puslapius gali gauti blocką, tokiu atveju turėtum ieškoti proxių(paprastų arba resi), kad tuos blokavimus apeitum. Kaip ir minėjau, turėsi researchinti pats kas padės(jei padės). O scripto sulūžimai tai čia scrapinimo kasdienybė.

P.S. iš savo ip ar vps scrapinti didelėm apimtim nepatariu, nes jokiem paslaugų tiekėjam nepatinka, kai jų ip reportina už "abuse", tam geriausia naudoti kad ir paprastus proxius.

Nuoroda į komentarą
Dalintis per kitą puslapį

prieš 2 valandas(-ų), d0Nt parašė:

Magijos čia nėra ir nebus. Arba ieško gražaus api/site kuris neblokuoja arba bandyk nuscrapinti jau rastus. Būtent kaip tą padaryti nepasakysiu, turėsi atlikti research pats.

Paprasčiausias būdas būtų susirasti, kas gali nuscrapinti duomenis už tave. Tokių paslaugų tiekėjų yra tikrai daug. Taip pat yra paslaugų tiekėjų, kurie "nuomoja" backend'ą scrapinimui, pavyzdžiui https://oxylabs.io/products/web-unblocker.

Sudėtingesnis būdas būtų daryti tą, ką bandei daryti prieš tai. Kartais requestai reikalauja cookių, o kartais specialių headerių. Cloudflare blokavimus apeiti kartais padeda paprasčiausias site užkrovimas su naršykle(ne tik get requestas). Python'ui naršyklių "controllerių" nežinau, bet kalbant apie nodejs jų yra ne vienas: puppeteer, playwright(arba gali naudoti šiek tiek pažįstamą selenium). Net ir pavykus nuscrapinti kelis puslapius gali gauti blocką, tokiu atveju turėtum ieškoti proxių(paprastų arba resi), kad tuos blokavimus apeitum. Kaip ir minėjau, turėsi researchinti pats kas padės(jei padės). O scripto sulūžimai tai čia scrapinimo kasdienybė.

P.S. iš savo ip ar vps scrapinti didelėm apimtim nepatariu, nes jokiem paslaugų tiekėjam nepatinka, kai jų ip reportina už "abuse", tam geriausia naudoti kad ir paprastus proxius.

Stipriai dėkingas už atsakymą. Kaip laikiną variantą minimaliam duomenų kiekiui nuscrapinau paprastesnę svetainę, Pasidomėsiu nuomojamu backendu, visai įdomiai skamba. Žinau kad su requests toli nenueisi, teks turbūt kažką susukt su puppeteer, nes noris daugiau praktikos su JS.

Kalbant apie paslaugų tiekėjus, tokiems vienkartiniams scrapinimo darbeliams discorde kažkur ieškot, ar fiverry medžiot?

Nuoroda į komentarą
Dalintis per kitą puslapį

top.gg naudoja client side rendering, kuris siuncia requestus i API, todel galima butu tuo pasinaudoti ir imti data is ten, pvz:

https://top.gg/api/client/entities/search?platform=discord&entityType=server&amount=10&skip=0&nsfwLevel=1&newSortingOrder=TOP&sort=top&isMature=false

disboard.org daro server-side rendering, tas kelia kazkiek problemu, nes nematai is kur jie traukia informacija. Kaip ir minejo @d0Nt tau meta 403 tikriausiai, nes truksta tam tikru headeriu kad praleistu. Juos galima butu prideti i pythono requesta, bet daug vargo ir ne visada pavyks. Gali bandyti naudoti selenium webdriver, kuris naudotu web browseri ir "apsimestu" kaip tikras vartotojas, bei supildytu visus headerius

Nuoroda į komentarą
Dalintis per kitą puslapį

Užėjęs į disboard.org matau, kad jie naudoja cloudflare. Pirmą kart padaręs request'ą į svetainę, gausi __cf_bm cookie:
PN2LFKt.png

Jį cloudflare naudoja bot'ų atpažinimui. Man, scrapinant kitą svetainę teprireikė tik šio cookio, kad gauti prieigą, todėl gali užsikurti seleniumą, kad gauti tą cookie, jį užcachinti ir naudoti iki kito cookio atnaujinimo su seleniumu, o patį scrapinimą daryti su kitu, tavo mėgstamu library ir užcachintą cookie padavinėti per cookie headerį.

Nuoroda į komentarą
Dalintis per kitą puslapį

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...