Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevok: 1 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 18.01.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok NapísalOffline : 02.11.2018 19:48

Ahoj Pcforumisti, dnes článok opäť z mikrokontrolérov. Konkrétne sa budem baviť o spôsobe, akým som z mikrokontroléru spravil webscraper. (Ak sa to tak dá nazvať pri spracovaní informácii vlastným backendom)
Ako mnohí z vás viete, web scraper je zariadenie, ktoré plní úlohu získavania informácii z danej webovej lokality. Medzi najžiadanejšie informácie z webových lokalít sú e-mailové adresy, telefónne čísla. V poslednej dobe sa ale tento fenomén používa aj na rôzne štatistické úlohy, kedy web scraper získava údaje o produktoch, ich cene a tie vyhodnocuje.

Dokonca sa podobné zariadenia využívajú a to ako roboty na obchodovanie s kryptomenami, či bežnými menami. Robot v najvhodnejší čas(štatisticky) pedal a nakúpil inú - vhodnú menu so stúpajúcou tendenciou. V mojom prípade som sa zaujímal o získavanie informácii z webov a to konkrétne telefónnych čísel a e-mailových adries.
Web scraper cez mikrokontroléry
Prejdem teda priamo k realizácii. Využil som 3 druhy mikrokontrolérov. Pre weby na nešifrovanom HTTP protokole som použil Arduino s Ethernet shieldom (podporuje iba HTTP spojenia), pre weby pod HTTPS protokolom som použil dosku NodeMCU s integrovaným čipom ESP8266 a taktiež aj ESP32 Devkit v1 DOIT. ESP32 má oproti ESP8266 výhodu v tom, že disponuje dvomi jadrami, rýchlejšími o 160MHz, má o takmer 400kB viac RAM a je možné túto dosku napojiť aj do podnikových sietí pod protokolom 802.1x (WPA/WPA2 Enterprise).
Web scraper cez mikrokontroléry
Funkčnosť všetkých troch menovaných dosiek je až morbídne jednoduchá. Ich úlohou je iba pripojiť sa na cieľový web, odkiaľ chceme informácie získať a zdrojový kód po riadkoch posielajú na môj web, kde sa tieto informácie spracujú a za pomoci regulárneho výrazu získam informácie, ktoré potrebujem. Nakoľko dosky nedokážu spustiť client-side script, teda Javascript, tak sú chránené pre JS aplikáciami na vyhľadávanie scraperov, iné zariadenia typu Rpi dokážu zaznamenať, pretože pri emulácii prehliadača tieto scripty spustia. Moje dosky sa nezobrazia v Google Analytics, či sledovanom nástroji Smartlook a pod.

Jediná možnosť zaznamenať informácie o doske, že na stránke bola (vykonala GET request)je cez PHP kód, alebo iný serverovo orientovaný jazyk, na ktorý bol request vykonaný. Je možné pristupovať na rôzne verzie HTTP hlavičiek od 1.0 cez 1.1 a s novšími doskami ESP32 aj na HTTP /2 - podľa podpory cieľového webu. Na mojom webe spracúvavam riadky zdrojového kódu iného webu cez PHP, kde mám vyskladaný requlárny výraz, ktorý som postupne vylepšoval a dnes som schopný zaznamenať tieto druhy e-mailových adries, ktoré sa na weboch vyskytujú v rôznych formátoch, ktoré ich majú uchrániť pred získaním robotmi, scrapermi, crawlermi.
Web scraper cez mikrokontroléry
Doskám neprekáža ani obsah za prihlásením, dokážu sa prihlásiť na web ako štandardný používateľ prostredníctvom HTTP Autentizácie - ak to host povoľuje. Postupom času je možné vytvoriť aj pokročilé aplikácie na záznam štatistických údajov z daného webu. Napríklad teplota z niektorej meteo stránky, kurz bitcoinu, štatistika športových zápasov a pracovať s týmito dátami je možné po celé roky.

Jednu stránku môže prehliadať aj niekoľko dosiek súčasne, obecne používam jednu návštevu raz za 6 - 24 hodín, ak sa jedná napríklad o stránky týkajúce sa správ, z čoho je možné následne tvoriť RSS feed, ktorý sa dá umiestniť na môj web, alebo mať podobné využitie. Spracované údaje sa môžu okamžite ukladať do databázy, tabuliek v xml, či csv formáte a tie použiť prakticky ihneď.

Dúfam, že sa vám článok páčil a naučili ste sa jedno z nových využití Arduina, ESP dosiek a otvoreného hardvéru celkovo. Získavanie dát je dnes žiadané a možno tento spôsob získavania dát bude mať za následok v budúcnosti vybudovanie fariem, kde sa podobný hardvér na získavanie využije a spracovanie dát prebehne už v backende danej farmy, ktorá môže s dátami obchodovať, tvoriť miliónové zoznamy e-mailových adries, telefónnych čísel.
*Použitie dát z iného webu a ich sťahovanie musí byť povolené aj z druhej strany :)
Niečo viac o mojom scraperi na NodeMCU: https://arduino.php5.sk/web-scraper.php
Na čítanie obsahu webu stačí použiť príklad Webclienta (Arduino) a upraviť si ho podľa seba: https://www.arduino.cc/en/Tutorial/WebClient
(ESP8266 HTTP): https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino
(ESP8266 HTTPS): https://gist.github.com/9SQ/200c796672b0f4db173e
(ESP32 HTTP): https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiClient/WiFiClient.ino
(ESP32 HTTPS): https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFiClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino
(ESP32 pod 802.1x HTTP): https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiClientEnterprise/WiFiClientEnterprise.ino
Zdrojový kód pre ESP8266 pre zber dát - zdrojových kódov cieľového webu po riadkoch - verzia Arduino core 2.3.0 (HTTPS spojenia vyšších verzií fungujú cez BearSSL, nie fingerprint)
Kód:
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h> //only for 2.3.0. core
#include <ESP8266HTTPClient.h>
const char * ssid = "my_ssid";
const char * password = "my_pass";
const char * host = "www.cielovyweb.sk";
const int httpsPort = 443;
const char* fingerprint = "‎‎a6 02 4d e1 32 b0 0b fe 56 85 0f 84 03 ec b2 18 23 09 f0 63;
String inData;
void setup() {
  Serial.begin(500000);
  Serial.println();
  IPAddress ip(192, 168, 2, 50);
  IPAddress gateway(192, 168, 2, 20);
  Serial.print(F("Setting static ip to : "));
  Serial.println(ip);
  IPAddress subnet(255, 255, 255, 0); // set subnet mask to match your
  WiFi.config(ip, gateway, subnet);
  Serial.println("pripajam na ");
  Serial.println(ssid);
  WiFi.begin(ssid, password); //pripoj sa na wifi siet s heslom
  while (WiFi.status() != WL_CONNECTED) { //pokial sa nepripojime na wifi opakuj pripajanie a spustaj funkcie pre ovladanie v offline rezime
    delay(500);
    Serial.println(".");
  }
  Serial.println("");
  Serial.println("WiFi pripojene"); //uspesne pripojenie na wifi siet
  Serial.println("IP adresa: ");
  Serial.println(WiFi.localIP()); // pridelena IP adresa pre dosku
  index();
}
void index() {
  WiFiClientSecure client; //HTTPS client
  if (client.verify(fingerprint, host)) {} else {}
  if (client.connect(host, httpsPort)) {
    Serial.println("Connected to server!");
    String url = "/";
    client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "User-Agent: NodeMCU\r\n" + "Connection: close\r\n\r\n");


    // if there are incoming bytes available
    // from the server, read them and print them:
    while (client.available()) {
      char thisChar = client.read();
      inData += thisChar;


      // echo to the server what's been received to confirm we have the string
      if (thisChar == '\n')
      {
        Serial.print("\nreceived:");
        Serial.print(inData);
        HTTPClient http;
        http.begin("http://www.arduino.php5.sk/connect.php");
        http.addHeader("Content-Type", "application/x-www-form-urlencoded");
        http.POST("c=" + inData);
        http.writeToStream(&Serial);
        http.end();
        inData = "";
      }
    }
    client.stop();
    Serial.println("Vsetko");
  } else {
    Serial.println("Nepripojene");
  }
}
void loop() {

}         


Odpovedať na tému [ Príspevok: 1 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Web scraper pre autobazar.eu

v Ponuka práce

0

621

06.04.2017 22:14

Lessik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. web cez ip

v HTML, XHTML, XML, CSS

24

1574

07.01.2008 20:42

suchy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Web cez mobil ...

v Webdesign

3

521

04.12.2011 18:25

snow23 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Prepisanie suboru cez web

v PHP, ASP

6

613

15.07.2007 18:05

suchy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. RSS na Web cez PHP

v PHP, ASP

3

781

08.06.2008 14:46

pepek92 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zobrazenie web stránky cez vlastné FTP

v Ostatné

2

717

30.10.2011 13:31

sedlák Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Jeden vstup na web cez ip adresu

v JavaScript, VBScript, Ajax

5

430

16.10.2013 21:57

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. WEB-portál - Vykurovanie cez internet - otvorený hardvér

v Články

0

1789

24.03.2019 18:27

martinius96 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nejde mi sťahovať cez web prehliadač + problémy s java

v Ostatné programy

2

511

27.10.2014 18:56

mag19981 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vlastný web ľahko a zadarmo cez Webové stránky Google

v Webhosting a servery

8

5145

30.01.2009 21:36

ARINER Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Web server pripojený k netu cez iný server

v Sieťové a internetové programy

1

638

31.12.2008 12:36

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Web hosting control panel pre free web

v Webhosting a servery

1

1055

06.04.2019 8:05

rukitinc Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hľadáme programátora web stránok a web aplikácií

v Ponuka práce

0

731

27.02.2013 11:51

artexe Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hľadáme (1.) web dizajnéra a (2.) web kódera - na dlhodobú spoluprácu / práca z domu

v Ponuka práce

0

772

15.01.2015 9:12

crystalgroup Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. web kamera & web

v Video programy

4

848

29.12.2007 13:22

jablko05 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Strašne pomalé pripojenie cez kábel, ale cez WIFI normálne

v Siete

4

1099

21.09.2011 18:49

scentrala Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra