IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
tomkrata
Člen
Avatar
tomkrata:21.7.2018 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
21.7.2018 23:39
Avatar

Člen
Avatar
Odpovídá na tomkrata
:22.7.2018 0:04

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

 
Nahoru Odpovědět
22.7.2018 0:04
Avatar
NouF
Člen
Avatar
Odpovídá na tomkrata
NouF:22.7.2018 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.7.2018 6:15
Avatar
tomkrata
Člen
Avatar
Odpovídá na NouF
tomkrata:22.7.2018 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.7.2018 9:10
Avatar
tomkrata
Člen
Avatar
Odpovídá na
tomkrata:22.7.2018 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.7.2018 9:15
 
Nahoru Odpovědět
22.7.2018 9:14
Avatar

Člen
Avatar
Odpovídá na tomkrata
:22.7.2018 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.7.2018 10:14
Avatar
tomkrata
Člen
Avatar
Odpovídá na
tomkrata:22.7.2018 10:26

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

 
Nahoru Odpovědět
22.7.2018 10:26
Avatar

Člen
Avatar
Odpovídá na tomkrata
:22.7.2018 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.7.2018 13:12
Avatar
Odpovídá na
Neaktivní uživatel:22.7.2018 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
22.7.2018 14:13
Neaktivní uživatelský účet
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:22.7.2018 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.7.2018 14:48
the cake is a lie
Avatar
Odpovídá na Petr Čech
Neaktivní uživatel:22.7.2018 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
22.7.2018 16:06
Neaktivní uživatelský účet
Avatar
NouF
Člen
Avatar
Odpovídá na tomkrata
NouF:23.7.2018 6:35

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

 
Nahoru Odpovědět
23.7.2018 6:35
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:23.7.2018 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.7.2018 9:05
 
Nahoru Odpovědět
23.7.2018 9:02
Avatar

Člen
Avatar
:28.7.2018 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.7.2018 14:06
 
Nahoru Odpovědět
28.7.2018 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.