Wykonanie dalszej części skryptozakładki JS.

Wykonanie dalszej części skryptozakładki JS.
olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
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.

Kopiuj
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ć:

Kopiuj
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ą ;)


Pozdrawiam.
cerrato
@Freja Draco: masz okazję się wykazać. O ile kojarzę, to Twoja działka.
Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
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:

Kopiuj

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);    
    
}
)
();

fasadin
sprawdzaj_adres :( czemu polska nazwa?
olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
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.

Kopiuj
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);
}
)
();

Pozdrawiam.
edytowany 1x, ostatnio: olesio
Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
1

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

Kopiuj
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);    

}
)
();

edytowany 1x, ostatnio: Freja Draco
olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
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.


Pozdrawiam.
edytowany 1x, ostatnio: olesio
Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
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.


olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
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...

Kopiuj
<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ę.

Kopiuj
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);  

}

Pozdrawiam.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)