[ Príspevok: 1 ] 
AutorSpráva
Offline

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

Registrovaný: 17.02.14
Prihlásený: 20.12.24
Príspevky: 451
Témy: 198 | 198
Bydlisko: Poprad-okolie
NapísalOffline : 02.11.2018 19:48 | Web scraper cez mikrokontroléry

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() {

}         


 [ Príspevok: 1 ] 


Web scraper cez mikrokontroléry



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

682

06.04.2017 22:14

Lessik

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

Web cez mobil ...

v Webdesign

3

571

04.12.2011 18:25

snow23

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

web cez ip

v HTML, XHTML, XML, CSS

24

1624

07.01.2008 20:42

suchy

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

Prepisanie suboru cez web

v PHP, ASP

6

651

15.07.2007 18:05

suchy

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

RSS na Web cez PHP

v PHP, ASP

3

978

08.06.2008 14:46

pepek92

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

Zobrazenie web stránky cez vlastné FTP

v Ostatné

2

761

30.10.2011 13:31

sedlák

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

Jeden vstup na web cez ip adresu

v JavaScript, VBScript, Ajax

5

489

16.10.2013 21:57

shaggy

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

1991

24.03.2019 18:27

martinius96

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

5210

30.01.2009 21:36

ARINER

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

553

27.10.2014 18:56

mag19981

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

691

31.12.2008 12:36

JanoF

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

771

27.02.2013 11:51

artexe

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

Web hosting control panel pre free web

v Webhosting a servery

1

1113

06.04.2019 8:05

rukitinc

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

833

15.01.2015 9:12

crystalgroup

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

web kamera & web

v Video programy

4

901

29.12.2007 13:22

jablko05

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

1269

21.09.2011 18:49

scentrala



© 2005 - 2024 PCforum, edited by JanoF