download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Източване на сайт директно в база данни - scraping web site?

<1 2 >

Автор
Съобщение
kookki
Сря, 21.09.11, 00:18
Недялко, ще е проблем ли за теб, да обясниш ред по ред скрипта. Преминах от С++ в изучаване на php, но някои неща от синтаксиса на срипта влизат в противоречие с наученото от мен. Начинаещ съм в езика и затова питам.
Малко около масива и променливите се омотах и не само там .
phrozencrew
Сря, 21.09.11, 19:13

RE: Източване на сайт директно в база данни - scraping web site?

” Недялко, ще е проблем ли за теб, да обясниш ред по ред скрипта. .. „
Естествено, приятел! До колкото мога ще се опитам да обясня:
$argc - Съдържа броя аргументи, подадени на скрипта, когато е пуснат от командния ред. Вградена променлива в PHP.
$argv - Съдържа масив с всички аргументи, подадени на скрипта, когато е пуснат на командния ред. Също вградена променлива в PHP. $argv[0] - първият елемент е името на файла. Можеш да го видиш и в следния пасаж: <?php echo $argv[0]; ?> <site> <xpath>.

Всичко което е извън <?php ... ?> се интерпретира като обикновен текст. Силата на PHP е в това, че можеш да смесваш текст и програмни инструкции без да ти пука. Нативно. Нещо, което почти никой друг език не притежава без допълнителни библиотеки.

`lynx -source $url` - ляво наклонените кавички са указател за стартиране на команда от обкръжението и прочитане на изхода от изпълнението на командата. Мързелива алтернатва на shell_exec(), system() и exec(). Стартирането по този начин на системни команди е краднато именно от C/C++.

$dom = new DOMDocument(); - Зареждане на DOMDocument класа за обработка на HTML и XML документи. . В този клас са набутани много инструменти за работа с HTML и XML-документи.

loadHTML($html); - Това е ясно. Зарежда HTML код от стринг.

$xpath = new DOMXPath($dom); - Тук викаме класа DOMXPath (към момента поддържа XPath 1.0) и зареждаме за обработка HTML файла.

$xpath->evaluate($argv[2]) - DOMXPath::evaluate - обработване на XPath израза (който в случая е втория аргумент от командния ред) и връщане на резултат, ако има съвпадение. Готиното е че резултатите от търсенето за съвпадък в документа се натрупват в масив (в случая $hrefs).

for ($i = 0; $i < $hrefs->length; $i++) - тук е ясно, предполагам. За всеки елемент от масива $hrefs... Има много начини да се напише този цикъл.

$hrefs->item($i)->nodeValue; - това показва стойността, която се съдържа всеки елемент от масива от HTML-елементи. DOMNode клас. Може би трябва да се видят няколко примера, за да се схване.
==============

За да натренираш XPath изрази можеш да ползваш добавката за Firefox - XPather. Пипнал съм кео тази добавка, за да работи с по-новите версии на FF: xpather_1.5.1646.xpi

Не се притеснявай да питаш за каквото и да е! Ако аз не го разбирам или не мога да го обясня, то някой друг ще може.

dreamskill
Сря, 21.09.11, 20:03
престъпление ли ще е ако източим помагало.цом?
anonymous
Сря, 21.09.11, 20:07
Нед искаш да кажеш че по този начин можеш да източиш дори и съхранените пароли в сайт след което да се логнеш с тях ?

Ако правата към файла са "644" пак ли може да се източи ?

anonymous
Сря, 21.09.11, 20:21
@Dreamskill - Не!Защо? Ами защото не можеш с тези скриптове, това точи само информация, предоставена от сървъра.

@armen - Не, разбира се . HTML файла се сваля и от браузъра ти(това, което е дал Недялко работи като браузър, той не се бърка в файловете на сървъра, просто си поисква страницата и сървъра я предоставя, както би направил и ако заредиш дадената страница в браузъра си). Ако някъде в него има пароли, то ще можеш да ги видиш и като кликнеш на "Изходен Код" на дадена страница. Такива обаче обикновенно няма в страниците на сайтовете .

@ Phrozen - Каква ти е целта?? Да извлечеш всички линкове или да извлечеш всичко от страницата?
Защото ако е за едните линкове са не повече от 2-4 реда код(то и всичко да извличаш пак не са много, но е по трудно).

dreamskill
Сря, 21.09.11, 20:27
За 1,20лв да източиш целия сайт? :D
phrozencrew
Сря, 21.09.11, 21:02

RE: Източване на сайт директно в база данни - scraping web site?

” @ Phrozen - Каква ти е целта?? Да извлечеш всички линкове или да извлечеш всичко от страницата? „
Не! Предполагам, че не си прочел началото на темата. Или просто не си пробвал скрипта с Chickenfoot. Точи се само необходимото инфо без шлаката. Пробвай го и ще разбереш кое точно точа в базата данни.

” За 1,20лв да източиш целия сайт? :D „
Именно!!! Схванал си сентенцията ! Но не целия сайт, а само текстовете на уроците с уникалния им ID, категорията в която са и картинките, които се включени в дадена статия. Всичко останало не ни интересува.

==================

Между другото техниката е по-позната в някои програмни езици и на някои програмисти (писачи на търсачки) и като harvesting. Според мен web scraping и web harvesting са едно и също нещо. До колкото знам първия пич, който пише подобен скрипт на C++ за обхождане на сайт е защото пича си е загубил данните за акаунта на хостинга. Трябвало е да пренесе цялата информация от базите данни на друг хостинг и е написал скрипт, който да свали само необходимото с ID-tata (идентификационните ключве за базата данни), които се получават при GET-заявките.

редактиран от phrozencrew на 21.09.11 21:11
anonymous
Сря, 21.09.11, 21:19
Нед не отговори на моите въпроси....
phrozencrew
Сря, 21.09.11, 21:30

RE: Източване на сайт директно в база данни - scraping web site?

” Нед не отговори на моите въпроси.... „
Сори, Еди! С това няма как да се точат пароли, освен да се направи да брути. Скриптовете действат като браузър, който извлича само определена информация от страниците.
anonymous
Сря, 21.09.11, 21:48
Именно!!! Схванал си сентенцията ! Но не целия сайт, а само текстовете на уроците с уникалния им ID, категорията в която са и картинките, които се включени в дадена статия. Всичко останало не ни интересува.



Е, то това всеки може да го направи, но с тая информация какво ще правиш после? Важното за тях(Pomagalo.com) е, че не можеш да свалиш документа от сайта им, пък ти ако щеш 1000 мирора си прави

редактиран от anonymous на 21.09.11 21:50
kookki
Сря, 21.09.11, 21:49

RE: Източване на сайт директно в база данни - scraping web site?

” Нед не отговори на моите въпроси.... „

Ще се включа и аз, нищо че от оня ден прохождам в сферата.
Ако вкараш някакъв код в страницата, той не се визуализира от браузъра, а се обработва от сървъра и резултатът за браузъра е изход, форматиран с html. Така, че няма как да знаеш какво се съхранява на сървъра. Ако пробиеш пък сървъра, най -вероятно ще откриеш, че паролите са обработени с някоя хеш функция и за нищо не стават.

phrozencrew
Сря, 21.09.11, 22:47

RE: Източване на сайт директно в база данни - scraping web site?

” Е, то това всеки може да го направи, но с тая информация какво ще правиш после? Важното за тях(Pomagalo.com) е, че не можеш да свалиш документа от сайта им, пък ти ако щеш 1000 мирора си прави
Никой не иска да прави миръри. За какво ти е да правиш мирър???
phrozencrew
Сря, 21.09.11, 22:57
” Ако пробиеш пък сървъра, най -вероятно ще откриеш, че паролите са обработени с някоя хеш функция и за нищо не стават. „
Коки, мога да те уверя, че много от форумите и социални сайтове поддържат пароли на потребителите си, които са са 5-символни md5-хеширани стрингове. А това се краква за секунди. Ако не целиш да кракваш парола на определен потребител, а масовка, ще получиш голям берект. Стига да успееш да кракнеш базата данни с потребители. Просто много от потребителите се регистрират с едни и същи имена и пароли в множество сайтове. Как ще използваш информацията е съвсем друго нещо.
Само за пример - скоро oldcastle беше публикувал на сайта си много приличен онлайн md5-разбивач. Може да се пробва с 5-6 символни пароли. Справя се идеално!
kookki
Чет, 22.09.11, 02:31
Жените са уникални в генерирането на пароли. В повечето случаи използват ЕГН-то си, собственото си име (като за по-голяма сигурност го пишат на обратно), имена на близки роднини или комбинация от цифри като 111222, 111111, 123456789 и т.н. Речникова атака е много лесна - просто за половин час трябва да се сетиш за всичките комбинации.
Днес една колежка въведе парола от 7 седмици пред всички, за достъп до система за Е-изпитване.
Ми ако не е пуснала на някой, той дали може да и навреди в тази системата ?
Аз следвам идеята, че ако не пазиш нещо много ценно, инвестираш малко като защита.
Безсмислено е да слагам корава парола тук, след като не съхранявам ценни данни.
Е за Е-изпитването праснах 12 символна парола със спец. символи.

<1 2 >

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.