Wykonanie dalszej części skryptozakładki JS.

0

Hej. Tak na szybko z pracy. Mam taki lamerski kod którym próbuję ogarnąć na nowo skryptozakładki JS w Chrome lub Fire Fox.

Jak wkleję te dwa kody pod dwa osobne przyciski na pasku Chrome to ładnie działa klikając jeden a później drugi, a chciałbym połączyć to w jeden.

Chodzi o to że pierwszy kod przenosi na podstronę z osadzonym playerem i zawiesza wykonanie dalszej części skryptu jakby, a żadne googlowanie zdarzeń onload nie dało mi spodziewanych efektów przy próbach użycia.

javascript:(function()
{
    var btn2 = document.getElementsByClassName('multilink3');
    if (btn2.length > 0) {
        var str2 = btn2[0].innerHTML;
        var reg2 = /src\=\"(.+?)\"/;
        var url2 = str2.match(reg2)[1];
        document.location.href = url2;
    }
}
)
();

Ten kod za to otwiera ładnie plik video na stronie pełnej badziewych reklam i dziwnych skryptów i temu ma ten skrypt służyć by oglądać a nie dać się spamwoać:

javascript:(function()
{
    var btn2 = document.getElementsByClassName('video-js vjs-default-skin ');
    if (btn2.length > 0) {
        var str2 = btn2[0].innerHTML;
        var reg2 = /src\=\"(.+?)\"/;
        var url2 = str2.match(reg2)[1];
        document.location.href = url2;
    }
}
)
();

Z góry dziękuję za pomoc, sorry że tak wypaliłem ni z gruchy ni z pietruchy ale babram się z tym dwie i pół godziny i sam nie rozpracuje jako kompletny laik w temacie JavaScript i pisania od czasu do czasu skrypto zakładek gdzie mi to totalnie jak widzicie nie idzie. Wszelkie przykłady rozwiązań mile widziane. Jeśli Mod uzna że temat do Newbie to niech przeniesie, ja tutaj wpadam jak burza i ostatnio ciągle o coś pytam lamerskiego, wybaczcie widocznie po czasie rolę się odwracają ;)

1

Mniemam, że problem polega na tym, iż pierwszy skrypt zmienia adres strony, a drugi odwołuje się do obiektów ze strony już pod nowym adresem, ale po połączeniu ich w jedno wysyłasz go, jeszcze zanim ta druga strona się załaduje, więc nie znajduje, co mu potrzebne, więc nic nie robi. Sugeruję zrobić coś takiego:


javascript:(function()
{
    var btn2 = document.getElementsByClassName('multilink3');
    if (btn2.length > 0) {
        var str2 = btn2[0].innerHTML;
        var reg2 = /src\=\"(.+?)\"/;
        var url2 = str2.match(reg2)[1];
        document.location.href = url2;
    }
    
    var sprawdzaj_adres = setInterval(function(){
        var btn2 = document.getElementsByClassName('video-js vjs-default-skin ');
        if (btn2.length > 0) {
            clearInterval(var sprawdzaj_adres);
            var str2 = btn2[0].innerHTML;
            var reg2 = /src\=\"(.+?)\"/;
            var url2 = str2.match(reg2)[1];
            document.location.href = url2;
        }    
    }, 1000);    
    
}
)
();
0

Hej @Freja Draco: ślicznie dziękuję za odpowiedź. Dokładnie o to chodzi, tak jak napisałeś. Jednak po wklejeniu Twojego skryptu mam taki błąd w konsoli pod Fire Foxem: "SyntaxError: expected expression, got keyword 'var'". Żeby było łatwiej przetestować może jakbyś mógł dalej pomóc. Dodam, że chodzi o stronę videopenny i podstronę jakiegoś serialu. Co ciekawe wyszło to dopiero w domu, bo wiadomość pisałem na szybko w pracy bliżej końca nocnej zmiany że aby nawet "rozbity na dwie" skrypt-o-zakładki powyższy kod zadziałał musi na tej stronie być wyłączony jakikolwiek dodatek Ad Block. Także możesz doradzić co jednak nie tak jest?

Bo nawet scalenie tego tak jak w kodzie poniżej pokazuje testowo Alert ale po przeskoczeniu na drugą podstronę z osadzonym playerem w serwisie vidoza.net - tak jakby dalsza część skryptu się nie ładuje. W ogóle ta strona ma niestety masę badziewnych skryptów i reklam więc może też są jakieś metody aby przeładować i ukrócić skrypt-o-zakładki, nie znam się na tym za dobrze. Działam tutaj trochę po omacku z Waszą pomocą aby cel w pełni się udało być może osiągnąć.

Chyba że jakimś rozwiązaniem jest napisanie własnego dodatku dla siebie nieoficjalnego do Fire Fox lub Chrome. Ale nigdy w ten temat się nie wgłębiałem. Taki dodatek może mógłby na bieżąco monitorować strony otwierane w oknie i w zależności od strony wykonać pożądane przeze mnie zachowanie w skuteczny sposób.

javascript:(function()
{
    setInterval(function(){
    alert('test');
    var btn2 = document.getElementsByClassName('multilink3');
    if (btn2.length > 0) {
        var str2 = btn2[0].innerHTML;
        var reg2 = /src\=\"(.+?)\"/;
        var url2 = str2.match(reg2)[1];
        document.location.href = url2;
    }

        var btn2 = document.getElementsByClassName('video-js vjs-default-skin ');
        if (btn2.length > 0) {
            var str2 = btn2[0].innerHTML;
            var reg2 = /src\=\"(.+?)\"/;
            var url2 = str2.match(reg2)[1];
            document.location.href = url2;
        }

    }, 3000);
}
)
();
1

A bo było pisane z palca i jedno var było tam zupełnie od czapy, spróbuj:

javascript:(function()
{
    var btn2 = document.getElementsByClassName('multilink3');
    if (btn2.length > 0) {
        var str2 = btn2[0].innerHTML;
        var reg2 = /src\=\"(.+?)\"/;
        var url2 = str2.match(reg2)[1];
        document.location.href = url2;
    }

    var sprawdzaj_adres = setInterval(function(){
        var btn2 = document.getElementsByClassName('video-js vjs-default-skin ');
        if (btn2.length > 0) {
            clearInterval(sprawdzaj_adres);
            var str2 = btn2[0].innerHTML;
            var reg2 = /src\=\"(.+?)\"/;
            var url2 = str2.match(reg2)[1];
            document.location.href = url2;
        }    
    }, 1000);    

}
)
();
0

Hej. Ponownie dzięki za pomoc i cierpliwośc. Kiedyś sam aktywnie tutaj pomagałem w Delphi a teraz jak zajrzę raz na jakiś czas to lamie takimi pytaniami oraz "koderskimi potworkami" :) W tej chwili mam do.dyspozycji tylko telefon i w pociągu ginący zasięg Internetu w Orange a niestety pomimo że na http:/js.do/blog/bookmarklets dla testów zapodałem kod i wykonuje się bez błędów to jednak.podstrona z playerem vidoza się pokazuje i tyle. Przy okazji czy jest ładniejszy sposób by dobrać się do właściwości na przykład src= elementu po klasie?

Bo w powyższym kodzie jak widać przekombinowałem z regex ale tylko tak na szybko umiałem uzyskać pożądane linki. Zapytam też czy jest sens tutaj probując z jakichś może templates czy tutoriali szukać info i przykładów jak pod FireFox pisac wtyczki do tej przeglądarki? Może wtyczka potrafiła by więcej zdziałać. Bo albo to kwestia dodania zdarzenia do obsługi eventu gdy strona z playerem gdzie w jej kodzie html jest link do pliku mp4 załaduje się cala. Albo jakiś myk na użycie XMLRequest by pobrać link do mp4 mając link do tej drugiej strony z playerem ale tak z Waszą pomocą próbowałem i tutaj pojawia się problem mechanizmu zabezpieczeń i cross domain a więc tak to się chyba nie da.

Jakieś sugestie jak to ugryźć na stronie videopenny.net? Chodzi by czasem kumpel czy ja bez na tej stronie durnych ruskich reklam czy jakichś dodanych i przez ESET wykrywanych jako wirusy elementów JS itp w szybki sposób mogli obejrzeć jakiś serial. Zrobiłem w miare działający skrypt w PHP który wyciąga ciasteczka z nagłówków HTTP, parsuje treści stron i odpala wget by pobrać epizod serialu w mp4 pod odpowiednią nazwą. Ale rozwiążania w przeglądarce jako nie wiem dodatek o ile się da albo pod jedną skryptozakładką całość było wygodniejsze jak się wydaje.

1
olesio napisał(a):

niestety pomimo że na http:/js.do/blog/bookmarklets dla testów zapodałem kod i wykonuje się bez błędów to jednak.podstrona z playerem vidoza się pokazuje i tyle.

Po przemyśleniu sprawy - tego się jednak nie da zrobić skryptozakładką.
Skryptozakładka wstrzykuje kod w aktualną stronę www, kod tę stronę przeładowuje i przy okazji kasuje cały wstrzyknięty kod, więc nic więcej się nie wykona.

Zostaje kombinowanie z jakimś Greasemonkey albo pisanie własnej wtyczki.

Przy okazji czy jest ładniejszy sposób by dobrać się do właściwości na przykład src= elementu po klasie?

https://www.w3schools.com/jsref/met_element_queryselector.asp
https://www.w3schools.com/cssref/css_selectors.asp

Zapytam też czy jest sens tutaj probując z jakichś może templates czy tutoriali szukać info i przykładów jak pod FireFox pisac wtyczki do tej przeglądarki? Może wtyczka potrafiła by więcej zdziałać.

Wtyczka potencjalnie może zrobić wszystko i kod przez nią odpalony operuje we własnej przestrzeni, więc jest niezależny od humorów i przeładowań strony.

Jakieś sugestie jak to ugryźć na stronie videopenny.net?

Najprościej Greasemonkey + skrypt, który dopisuje do strony własny przycisk playera, którego kliknięcie przeładowuje stronę, a po jej przeładowaniu odpala drugą porcję poleceń. Ew. posiłkując się przy tym local storage, żeby zapewnić komunikację pomiędzy poszczególnymi etapami pracy.

0

Hej. No coś tam mi wychodzi dzięki Twojej pomocy i tutorialowi z YT gdzie okularnik klepie w dzwonek jak Najman w matę albo Klient recepcji hotelu i macha z ciuchci ale podstawy jakie pokazał przy tworzeniu wtyczek do Chrome ;) Tylko nie umiem zestawić getElementsByClassName z queryselector. Poprosił bym jakiś przykład, bo chyba tylko da się z Id i nie bardzo to rozumiem. Doradź też czy sprawdzanie jaki adres jest otwarty w przeglądarce pod kątem skryptu robić w manifeście bo na razie mam "matches": ["<all_urls>"], i wszystko jest w robione w kodzie pliku js content_scripts, więc na razie jest taki "testowy potworek jak wklejam poniżej. Nie mam też teraz pod ręką o ile mi się ostał gdzieś kod JS skrypto zakładki która swego czasu wyświetlała link do streaamu RTMP jednego z popularnych swego czasu portali z pokazami bo w tej chwili widzę że w przypadku strony gounlimited link generowany jest funkcją w Js i zdaje się pewną "mocą" albo czymś typowym skryptów Js jako dodatków albo skrtypto zakładek jest to że odczytają sobie to co ta strona jaka się wykonuje ma w swoich zmiennych lub jest wynikami funkcji bo jeśli w kodzie strony mam coś w stylu...

<script type='text/javascript'>eval(function(p,a,c,k,e,d){while(c--)if(k[c])p=p.replace(new RegExp('\\b'+c.toString(a)+'\\b','g'),k[c]);return p}('p 8=2f 7.2e({2d:["c://2c.b.a/2b/v.2a"],29:\'28\',27:"c://26.b.a/25/24/23/k.22",21:"s%",20:"s%",1z:q,1y:"#1x",1w:{1v:3(){},},1u:{1t:[],1s:{1r:1q,1p:1o*r*r,1n:1m,1l:q}}});p d,i,h=0;8.g(7.f.1k,3(x){6(5>0&&x.9>=5&&i!=1){i=1;$(\'e.1j\').1i(\'1h\')}6(h==0&&x.9>=o&&x.9<=(o+2)){h=x.9}});8.g(7.f.1g,3(){n()});8.g(7.f.1f,3(){$(\'e.m\').1e()});3 n(){$(\'e.m\').l();$(\'#1d\').l();6(d)1c;d=1;4=0;6(1b.1a===19){4=1}$.18(\'c://b.a/17?16=15&14=k&13=12-11-10-z-y&w=1&4=\'+4,3(j){$(\'#u\').t(j)})}',36,88,'|||function|adb||if|Clappr|player|current|to|gounlimited|https|vvplay|div|Events|on|x2ok|vvad|data|jjl5kh6gamb8|hide|video_ad|doPlay|74|var|true|1024|100|html|fviews||embed||41913539a313b83ca3148f3b5d2c4fcf|1559611167|136|213|2015611|hash|file_code|view|op|dl|get|undefined|cRAds|window|return|over_player_msg|show|PLAYER_ENDED|PLAYER_PLAY|slow|fadeIn|video_ad_fadein|PLAYER_TIMEUPDATE|capLevelToPlayerSize|600|maxMaxBufferLength|60|maxBufferSize|30|maxBufferLength|hlsjsConfig|externalTracks|playback|onReady|events|vplayer|parentId|disableVideoTagContextMenu|height|width|jpg|00403|01|54|images|poster|none|preload|mp4|tea5uoe5cp2qzxfffohyhll46dbz7ebg2n4ddjpl5uqcmlr5ehqsm3mk6x3q|fs58|sources|Player|new'.split('|')))
</script>

To bez sensu jest to czytać i scalać tak jak robię to ze zmiennymi parturl1 i parturl2 bo świadom jestem jedynie że malutko wiem o JS i tworzę mega potworki, no ale każdy się uczy, a ja załapałem w chwili niewielkiej ilości wolnego czasu zajawkę na próbę sklecenia prostej wtyczki, chociaż w JS zawszę będę klepaczem i pewnie będę tworzył takie kwiatki jak ten kod, o ile coś tutaj jeszcze możesz doradzić, bo działa na oko ok, ale pewnie da się wiele rzeczy tutaj usprawnić na przykład wyszukiwanie klas mulyilinik poprzez tablicę.

if (document.location.href.indexOf('videopenny.net/') > 0 ) {
    var divelm = document.getElementsByClassName('multilink3');
    if (divelm.length == 0) {
        var divelm = document.getElementsByClassName('multilink1');
    }
    if (divelm.length > 0) {
        var str = divelm[0].innerHTML;
        var regexpr = /src\=\"(.+?)\"/;
        var fullurl = str.match(regexpr)[1];
        document.location.href = fullurl;
    }
}

if (document.location.href.indexOf('vidoza.net/') > 0 ) {
    var checkurlfunc = setInterval(function() {
        var divelm = document.getElementsByClassName('video-js vjs-default-skin ');
        if (divelm.length > 0) {
            var str = divelm[0].innerHTML;
            var regexpr = /src\=\"(.+?)\"/;
            var fullurl = str.match(regexpr)[1];
            document.location.href = fullurl;
            clearInterval(checkurlfunc);
        }   
    }, 200);
}

if (document.location.href.indexOf('gounlimited.to/') > 0 ) {
    var checkurlfunc = setInterval(function() {
            var str = document.body.innerHTML;
            var regexpr = /\|preload\|mp4\|(.+?)\|(.+?)\|sources\|/;
            var urlpart1 = str.match(regexpr)[1];
            var urlpart2 = str.match(regexpr)[2];
            var fullurl = 'https://' + urlpart2 + '.gounlimited.to/' + urlpart1 + '/v.mp4';
            document.location.href = fullurl;
            clearInterval(checkurlfunc);
    }, 200);  

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1