Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.
Avatar
tomkrata
Člen
Avatar
tomkrata:21. července 23:39

Mám napsaný skript v JS, ale potřebuju ho spustit na spoustu stránkách a nechce se mi to všechno proklikávat. Je zde nějaká možnost ho spustit třeba ve všech tabech v prohlížeči?

Zkusil jsem: Zkoušel jsem Chrome extension Inject Code, ale nefunguje mi getování elementů z html.

Chci docílit: Chci získat odkazy na youtube z daných stránek.

 
Odpovědět  +1 21. července 23:39
Avatar
Odpovídá na tomkrata
Vladislav Ladicky:22. července 0:04

Skoro sa bojím spýtať ... ty sa snažíš spustiť svoj skript na cudzích stránkach?

 
Nahoru Odpovědět  +1 22. července 0:04
Avatar
NouF
Člen
Avatar
Odpovídá na tomkrata
NouF:22. července 6:15

Není lepší si udělat seznam stránek a třeba cronem je procházet a "ukradnout" co chceš?

 
Nahoru Odpovědět 22. července 6:15
Avatar
tomkrata
Člen
Avatar
Odpovídá na NouF
tomkrata:22. července 9:10

Proč hned ukradnout? Odkazy jsou volně dostupné a já jen nechci všechny ručně opisovat. Toho crona zkusím, děkuji.

 
Nahoru Odpovědět 22. července 9:10
Avatar
tomkrata
Člen
Avatar
Odpovídá na Vladislav Ladicky
tomkrata:22. července 9:14

Je to snad nelegální?

var y = document.getElementsByClassName("xxxxx");
console.log(y[0].href);

Tohle je celý skript, který chci vložit.
Na těch stránkách jsou ty odkazy volně dostupné.

Editováno 22. července 9:15
 
Nahoru Odpovědět  -1 22. července 9:14
Avatar
Odpovídá na tomkrata
Vladislav Ladicky:22. července 10:14

Nie, to čo ty chceš dosiahnuť nie je nelegálne. Len si sa zle vyjadril. A zle pochopil problematiku, lebo to urobiť ide, ale (našťastie) nie tak, ako sa o to pokúšaš.

 
Nahoru Odpovědět 22. července 10:14
Avatar
tomkrata
Člen
Avatar
Odpovídá na Vladislav Ladicky
tomkrata:22. července 10:26

Jakým způsobem bych tedy měl tuto problematiku řešit?

 
Nahoru Odpovědět 22. července 10:26
Avatar
Odpovídá na tomkrata
Vladislav Ladicky:22. července 13:12

Najjednoduchší spôsob je stiahnuť si ajaxom obsah prehľadávanej stránky do premennej a až nad tou premennou hľadať príslušný tag. Odporúčam použiť jQuery. Napríklad takto nejako:

const parseResponse = resp => {
  const matchedElms = $(resp).find('.hladanaClass')
  console.log(matchedElms)
}

$
  .get('https://nejaka.stranka')
  .then(parseResponse)

Istý si nie som, jQuery som už dlhšie nepoužil, ale princíp sedí. Nemôžeš proste vo svojom skripte priamo rátať s pristupom do kódu inej stránky, veď to je bezpečnostný nezmysel, ale musíš si obsah stránky najskôr stiahnuť, tváriť sa ako prehliadač. Problém je, že toto nebude fungovať na SPA/PWA apky, a tých je čoraz viac. V takom prípade si danú stránku/aplikáciu musíš najskôr stiahnuť ako je, aj so skriptami, napríklad do Node, potom ju s Node vyrenderovať, napríklad s PhantomJS, a až potom môžeš traverzovať jej výsledný DOM model.

No a ak nevieš o čom hovorím, tak to proste ani neskúšaj a radšej si vygoogli nejakú hotovú apku na tento účel ;)

 
Nahoru Odpovědět 22. července 13:12
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Vladislav Ladicky
Daniel Vítek:22. července 14:13

Myslím, že AJAXem to vůbec nepůjde. Pokud to nejsou jeho weby, padne to na Cross Origin Policy.

Nahoru Odpovědět  +1 22. července 14:13
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Petr Čech
Redaktor
Avatar
Petr Čech:22. července 14:48

Pokud to obě stránky explicitně nepovolí, nelze se z jedné domény jakkoliv dotknout dat z jiné domény.
Na toto je JS zkrátka špatný jazyk (minimálně u klienta). Na toto je třeba spustit něco, co bude simulovat prohlížeč, takže nějaká serverová aplikace napsaná v čemkoliv. Pokud už máš napsaný složitý kód v JS a nechceš ho přepisovat do jiného jazyka, asi by to šlo nějak zprovoznit v node.js.

Nahoru Odpovědět 22. července 14:48
the cake is a lie
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Petr Čech
Daniel Vítek:22. července 16:06

Psal tam 2 řádky :D

Šlo by to relativně jednoduše udělat v PHPčku. Přes file_get_contents si stáhnout stránku a přes DOMDocument najít co potřebuje.

Nahoru Odpovědět  +1 22. července 16:06
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
NouF
Člen
Avatar
Odpovídá na tomkrata
NouF:23. července 6:35

Nebylo to myšleno špatně, spíš jen definice toho jak získat jeho data.

 
Nahoru Odpovědět 23. července 6:35
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:23. července 9:02

A. Ajax lze pouzit na localhost. Musel by si nainstalovat a spustit server, treba php. Tam stranku stahnout pres file_get_contents. Po te se stane text lokalni a na tvou stranku ajax lze. (viz Vitek)

B. S temi doplnky to nejspis pujde taky. Nepouzivam, neporadim. Ale pro hru Travian pouzivaji ruzne js doplnky. Takze v googlu bude spousta tipu, jake doplnky.

C. Existuji programy, ktere stahuji stranky na disk do hloubky X odkazu. Myslim, ze tam jde v nekterych zadat, ze z toho vycuca jen odkazy.

D. Da se udelat js editor, div content=editable, tusim, kam je mozne udela copy-paste kod a on by nekde delal seznam odkazu. Bud na onclick nebo onpaste. Neni to tak automaticke jako [A], ale dalo by se.

E. Existuje doplnek Firefox Link checker, ktery jsem pouzival pro testovani funkcnosti odkazu na strance. Prosel stranku, zkusil kazdy odkaz a pak obarvil zelene, cervene. Ale bylo by to asi slozitejsi nastudovat si kod a upravit :)

F. [B] Kdysi jsem na chatu xko.cz si udelal doplnek, ktery se spoustel ze zalozek a pridaval do stranky ruzny kod. Nevim, zda by to dnes prohlizece dovolili spoustet. Jmenuje se to BookMarkLet. Funguje to tak, ze na svuj web nahrajes stranku. Pridas do zalozek (upravis url). Pak otevres cizi. Kliknes na Zalozky - zvollis tu tvou stranku. A ono to nad tou strankou spusti nejaky kod.
https://www.jakpsatweb.cz/…marklet.html
Edit: Ok, tak jde to i primo. Ale ja to resil tak, ze jsem kod dal pod url a pak jsem to spoustel z te url pres eval(). Protoze jsem to chtel sdilet s ostatnimi. Pridaval jsem si k chatu vlastni listu se smajliky. Tam bylo omezeni 10, ale pouzivat sly vsechny pres cislo. Takze jsem mel treba 100.

Editováno 23. července 9:05
 
Nahoru Odpovědět 23. července 9:02
Avatar
gold604
Člen
Avatar
gold604:28. července 14:04

Ja by som to riešil cez Node.js package Puppeteer, ktorý ti dáva prístup ku Chromium-u cez Javascript API - https://www.npmjs.com/…ge/puppeteer.

Editováno 28. července 14:06
 
Nahoru Odpovědět 28. července 14:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.