Code Monkey home page Code Monkey logo

Comments (16)

JanPokorny avatar JanPokorny commented on July 30, 2024 2

Slavnostně hlásím že jsem našel řešení a je v tento moment live ve Vžum. (@setnicka take note)

Spočívá v použití Toru pro navázání počátečního spojení (získání cookies, odevzdání captchi, získání stahovacího URL), jeho následném přerušení (je potřeba explicitně přerušit a počkat cca 2s, jinak si Ulož.to myslí že session stahuje víc souborů) a navázání mimo Tor. Vlákna startují po dvojicích, mezi nimiž (a při chybě) se mění circuit.

Pro Python bych asi použil tohle: https://github.com/torpyorg/torpy/

from ulozto-downloader.

JanPokorny avatar JanPokorny commented on July 30, 2024 1

@muniv11111 Troufnu si tvrdit že to bylo spíš kvůli Vžum, to má tisíce uživatelů. Nicméně platit $3 za 1000 captcha se mi nelíbí, protože je to moc práce na to aby finální výsledek byl cca stejný jako si rovnou koupit Ulož.to premium. V ten moment mi fakt nepřijde morální (nakolik je toto slovo ironické v kontextu webu založeného na sdílení copyrighted materiálu) platit bandě Indů ve sklepě místo toho webu který používáme...

  • $3 => 1000 kódů => při 100 vláknech 20 souborů
  • 99 Kč => 25 GB kredit => při 1 GB na soubor 25 souborů

from ulozto-downloader.

setnicka avatar setnicka commented on July 30, 2024 1

Vyřešeno fungujícím způsobem přes Tor ve verzi 1.7.1.

Tak teď začněmě odpočítávat, než zase zavedeou další věc, na kterou bude potřeba se adaptovat :D

from ulozto-downloader.

muniv11111 avatar muniv11111 commented on July 30, 2024

Jojo, nějak často to vyhazuje ty hlášky: /download-dialog/free/limit-exceeded....

from ulozto-downloader.

JanPokorny avatar JanPokorny commented on July 30, 2024

Ten nový limit se zdá být per-file, a je poměrně přísný (je to netriviální počet minut). Prostě dostanete ReCaptchu pokud se vaše IP adresa daný soubor během posledních X minut nejméně dvakrát pokoušela stáhnout.

Napadají mě v zásadě dvě možnosti jak to řešit:

  • Nechat uživatele opisovat ReCaptchu (https://stackoverflow.com/questions/55493536/how-to-deal-with-the-captcha-when-doing-web-scraping-in-puppeteer)
    • ...případně dát možnost ji outsourcovat na nějakou z "$3/1000x ReCaptcha" služeb (to je reálná cena, právě jsem koukal), ale přijde mi to v zásadě k ničemu varianta pro program jehož jediný smysl je "být zadarmo"
  • Použít více IP adres (proxy servery?), dle mých experimentů to vypadá že stahovací link jde předat mezi IP adresami (a to i když z něj jedna už začala stahovat a pak uzavřela spojení), za předpokladu že to je stejná session (cookies)

...a pak třetí, trapná možnost, prostě capnout počet vláken na dvou a vykašlat se na to.

from ulozto-downloader.

muniv11111 avatar muniv11111 commented on July 30, 2024

@JanPokorny právě jsem sem chtěl napsat něco podobného ... :-) jsem ochoten zaplatit jednorázovou vstupní poplatek $3 na testování.. :-)
to ruční zadávání stojí taky za pokus.. možná by nebyly špatné obě dvě možnosti.. s tím že kdo by chtěl rychle stahovat s auto captcha, by si zaplatit a sám by si zadal koupený API key na 1000 (klidně i víc 😉) řešení captcha.. U toho ručního (G-recaptcha-response expires in 120 seconds) tam se neobejdu bez druhého headless prohlížeče jestli to chápu dobře a tím pádem provoz na serveru kde jedu nyní s auto-captcha by takhle nešel řešit?

Jinak je zajímavé, že jak se to tu trochu rozproudilo hned na uloz.to hodili tohle. :D Náhoda? :D Asi to bude neknečný boj s větrnými mlýny.. :-)

from ulozto-downloader.

muniv11111 avatar muniv11111 commented on July 30, 2024

@JanPokorny aha tak kolik stojí premium ulozto jsme neměl představu.. myslel jsem že to má cenu to API když jsi to zminoval...
a co teda to ruční zadávání? bylo by to složité? pracné na zadávání? popravdě mi moc není jasné z toho odkazu jak by to fungovalo... jinak já jsem rád že mi jede s auto-captcha na serveru.. no a dvě vlákna ono se to stáhne pomalu.. sice to nebude vžum rychlé no..

from ulozto-downloader.

muniv11111 avatar muniv11111 commented on July 30, 2024

@JanPokorny vím že to tu není o vžum a omlouvám se, ale čím to může být.. vypadá že to stahuje ale skáče mi tohle nejde to vykliknout hned je to zpět...

https://pasteboard.co/JBScoZQ.png

a s tím TOREM - jen aby to vydrželo... 🙏🏻

https://blog.torproject.org/changes-tor-exit-list-service

from ulozto-downloader.

JanPokorny avatar JanPokorny commented on July 30, 2024

@muniv11111 Shit, to jsem rozbil já při refactoringu, zapomněl jsem že v portable verzi není shell napojení 😆 Brzo bude fix, v tento moment to můžeš opravit tím že použiješ tu verzi co se instaluje. (Bug reporty mi příště můžeš napsat na email v patičce webu.)

Jo, jsem si vědom toho že "zablokovat Tor" je z jejich strany funkční řešení. Stejně tak by bylo funkční řešení přestat free účtům posílat Range header, ale to už 5 let neudělali... (Uvažoval jsem proč. Netuším. Stahovací server má k dispozici session a je schopen poznat zda daná session už stahuje. Tedy je mimo mě proč nedovede poznat zda daná session pochází z free účtu.)

from ulozto-downloader.

muniv11111 avatar muniv11111 commented on July 30, 2024

@JanPokorny jo dík nenapadlo mne že na webu máš i mail.. :D ale tak šla by použít nějaká jiná proxy s rotováním IP pak třeba, když by padl TOR ne? to range header třeba mne taky zaráží.. u webshare, které mne se svým pluginem pro kodi zajímá víc... si s range header u free nečuchnu..

from ulozto-downloader.

JanPokorny avatar JanPokorny commented on July 30, 2024

@muniv11111 Proxy byl první záměr, ale všechno co je free je děsně přetížené a nestabilní...

from ulozto-downloader.

JanPokorny avatar JanPokorny commented on July 30, 2024

@setnicka V kódu v komentáři tam říkáš něco o 429 co myslím úplně není pravda, 429 ti pošle stahovací server když ze stejného odkazu někde někdo už stahuje. Tím že stáhneš jen jeden link přes jedno tor spojení to nenapravíš -- je tam klíčové to HTTP spojení přes tor ukončit a chvíli počkat (ve Vžum mám 2s) než uděláš nové standardní spojení na ten stejný download link.

from ulozto-downloader.

setnicka avatar setnicka commented on July 30, 2024

@JanPokorny To neodpovídá tomu, co jsem o tom vypozoroval já. Když jsem přes stejné Tor spojení získal dva různé stahovací linky (a pak klidně tohle Tor spojení zavřel a mezitím navazoval nové), tak druhý v pořadí vždycky dostal 429... i když jsem před nastartováním zkoušel různě dlouhé čekání.

Vzhledem k rychlosti navazování dvou-hopového Tor spojení mi pak přišlo zbytečné řešit to víc a mám jedno Tor spojení pro jeden download link.

from ulozto-downloader.

muniv11111 avatar muniv11111 commented on July 30, 2024

no co - bloknou TOR nebo v horším range request.. :D

from ulozto-downloader.

JanPokorny avatar JanPokorny commented on July 30, 2024

@setnicka Ukončit spojení přes Tor trvá nějakou dobu (a afaik pokud jen odpojíš circuit, tak bude ještě chvíli tomu HTTP spojení mezi exit node a Ulož.to trvat než si to uvědomí), takže to může být tím že to první už se zavřelo a to druhé to ještě nestihlo. A teď když měníš Tor circuit pokaždé, tak tam to čekání vlastně implementuješ takto... 😆

from ulozto-downloader.

vladodriver avatar vladodriver commented on July 30, 2024

Limit je nyní 30 minut od posledního použití páru (IP && url_souboru). Pokud se daný pár (IP && url_souboru) nepoužije po dobu >= 30 minut, je limit uvolněn (důkladně otestováno), jinak se resetuje na 30 minut od tohoto posledního užití. Každý zbytečný pokus tedy blokuje další uživatele stejné TOR adresy a stejného souboru. Po vypršení lze znovu jen 2x. Je tedy dobré linky ukládat do cache souboru a při re-downloadu použít znovu, když mají platnost >= 2hodiny před vypršením (platí 48 hodin). Vše a mnoho dalšího (např. jednosouborové stahování ala torrent) jsem implementoval: v Opravy chyb zrychlení a vylepšení #50

from ulozto-downloader.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.