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

Как да свалим всичките си мнения от Download.BG

< 1 2 3 4 5 6 7 >

Автор
Съобщение
phrozencrew
Вто, 14.12.10, 21:09
Здрасти хора,

Гледам, че някои потребители имат притеснения относно мненията си във форума, като бат stoqncho например. И реших да напиша кратко ръководство за това как да свалим (в смисъл на download) мненията си, така че да не се изгубят, ако някой хаЦкер хакне сайта .
Най-лесния начин да се направи подобна игра е да се използва bash-шела на някой Linux. Въпреки, че dreven, insecteater, electric_cc, armenxxx1 и останалите зарибени по програмирането пичове и мацки биха могли да предложат и доста по-лесен вариант и за Winblowz. Мен си ме кефи bash и отворения код, за това ще използвам в случая Ubuntu. Ще си помогна малко с една друга моя тема за bash програмиране, както и лека помощ от Live HTTP Headers за Firefox.
Тази техника може да се използва за сваляне на каквото и да е от който и да е форум, но в случая ще се възползвам от великодушието на DBG.

PS: Ще напиша тутора във втория си пост, за да мога да го редактирам при нужда.

phrozencrew
Вто, 14.12.10, 21:10
Да започваме.
Необходимо ни е да разберем механизма на подаването на данни при логването. За това първо преди да се логнем в DBG нека стартираме LiveHTTP Headers добавката на браузера и да сложим отметка на "request", като в браузера сме заредили страницата за логин. Това ви е добре познато от предишният ми урок за сваляне на видео и други неща. След като сме готови и сме на страницата за логване си пише потребителското име и паролата в полетата и натискаме бутона за "Вход".
През това време LiveHTTP Headers улавя нашите POST заявки към сървара на DBG. Нас ни интересува реда с POST-заявката за логване с потребителско име и парола:

Това в случая е първи лог на LiveHTTP Headers. Е гати лесното :)!
Реда с пост заявката представлява следното:
cls=Users&mtd=Login&ref=&nick=phrozencrew&password=parolkata&action=%D0%92%D1%85%D0%BE%D0%B4

Нас ни интересува слдния пасаж:
nick=potrebitelw&password=parolkata

Интересува ни и на коя страница се подава тази пост заявка. И това си го пише най-отгоре:

http://www.download.bg/index.php?cls=users&mtd=login


Сега вече въоръжени с необходимата информация само трябва да си изберем един от хилядите инструменти на великия Linux и вече можем да притежаваме цялата информация на премиум логнатия потребител от сайта. Е гати, това ли беше. Ами да! Това беше! От тук нататък е тъпотия за третокласници.

Аз ще използвам инструмента wget, за който бях писал в 2-3 теми (макар, че с cURL може да се съкрати и улесни още), а също и един елементарен for-loop цикъл, така че всеки да схване идеята. Да автоматизираме нашата цел, която си поставихме в заглавието на темата.
Ние сме логнат премиум потребител и можем да видим всички мнения, които сме поствали във форума. И не само това. Можем да видим всички мнения на всеки друг потребител. Чудесно е това, нали!
Аз ще прегледам мненията на нашия притеснен съфорумник stoqncho. Пич, надявам се да ме извиниш, че те ползвам за пример! Но пък може и да ти е полезно. Та значи мненията на стоянчо към днешният момент се разпростират на 68 страници. Значи имаме отговор колко да се разпростира for-цикъла - от страница 1 до страница 68. Нека видим за какво говоря:

Виждаме и че адреса със страниците с мнения на stoqncho е следния, примерно за страница 2-а:
http://www.download.bg/index.php?cls=users&mtd=ownpostings&id=229067&h=b7476a7d6100ca10ee3464b11704fe9d&p=2
Забелязваме, че при смяната на всяка страница се променя числото накрая. Това ужасно много ни улеснява!
Така, да видим скрипта как би изглеждал и после ще вкарам малко обяснения:
nick='ника_ви'
pass='паролата_ви'
stranici=68
 
 
url='http://www.download.bg/index.php'
wget -O - --save-cookies=cookies.txt --keep-session-cookies --post-data "cls=Users&mtd=Login&ref=&nick=$nick&password=$pass&action=%D0%92%D1%85%D0%BE%D0%B4" ${url}
 
for ((i=1; i<=$stranici; i++)) do
	wget -O $i.html --keep-session-cookies --load-cookies=cookies.txt "http://www.download.bg/index.php?cls=users&mtd=ownpostings&id=229067&h=b7476a7d6100ca10ee3464b11704fe9d&p=$i"
	sleep 2
done

Първото използване на wget е за да ви логне във сайта, като запази сесията от логването в обикновен текстови файл.
--save-cookies=cookies.txt --keep-session-cookies
По късно при for-цикъла зареждаме запаметената сесия от текстовия файл, за да удостоверим сървар на DBG, че сме едни много логнати пичове:
--keep-session-cookies --load-cookies=cookies.txt
Добавяме и един sleep (пауза) от 2 секунди, за да не ни помисли сървара за атакуващи.

Прилагам целия скрипт, за да няма грешки от копи-пейста:
download_all_posts.sh.txt
Трябва да се изтрие "nomera.txt".
За да стартирате скрипта, преди това трябва да го направите изпълним. Това се прави с командата chmod +x download_all_posts.sh, а стартирането на скрипта от конзолата се извършва, ако сте в текущата директория ./download_all_posts.sh:

За да персонализирате скрипта за собствените си мнения или нечии чужди просто променете първите три реда с вашите данни:
nick='ника_ви'
pass='паролата_ви'
stranici=68

И за да не изглежда много сухо ето всички мнения, към момента, на нашия уважаван съфорумец stoqncho, свалени по горе описания метод:
mnenia_stoqncho.zip

За свалянето на прикачените файлове и картинки мисля, че ще се справите и сами. Но ако има интерес ще напиша просто скриптче и за това.

редактиран от phrozencrew на 14.12.10 21:14
редактиран от phrozencrew на 14.12.10 21:27
anonymous
Вто, 14.12.10, 21:40
Браво Нед!!! ето и още едно решение с твоята тема... преди време моя "приятел" Древния пусна тема за автоматично логване в д.бг но до колкото знам не се намери добро решение... но вече го има с твоята тема

http://www.download.bg/index.php?cls=Users&mtd=Login&ref=&nick=НИК&password=ПАРОЛА&action=%D0%92%D1%85%D0%BE%D0%B4

редактиран от anonymous на 14.12.10 21:42
kookki
Вто, 14.12.10, 22:08

RE: Как да свалим всичките си мнения от Download.BG

Браво ! Направо ми вкара муха в главата, как да го направя с С++. Ще падне творчество. След като си взех изпитите, мога пак да подхвана това хоби С-то.

” Въпреки, че dreven, insecteater, electric_cc, armenxxx1 и останалите зарибени по програмирането пичове и мацки биха могли да предложат и доста по-лесен вариант и за Winblowz. „

Понеже имам някои неизвестни, ще изчакам някой да се включи по темата с предложение за бозата.

phrozencrew
Вто, 14.12.10, 22:30
Благодаря за подкрепата, пичове!
Аз написах подобен скрипт и на VBScript, обаче бозата Window$ има известни проблеми с поддържането на връзката и по някое време примерно при сваляне на 7-8-ма страница вади грешка. Ще се опитам да подсигуря връзката и да пренапиша скрипта, но май vbs не особено печен за подобни лесни тарикатлъци. Ако 100% имам успех ще го публикувам като вариант. Все пак Linux изключително много улеснява програмиста.
anonymous
Вто, 14.12.10, 22:45

RE: Как да свалим всичките си мнения от Download.BG

” Благодаря за подкрепата, пичове!
Аз написах подобен скрипт и на VBScript, обаче бозата Window$ има известни проблеми с поддържането на връзката и по някое време примерно при сваляне на 7-8-ма страница вади грешка. Ще се опитам да подсигуря връзката и да пренапиша скрипта, но май vbs не особено печен за подобни лесни тарикатлъци. Ако 100% имам успех ще го публикувам като вариант. Все пак Linux изключително много улеснява програмиста. „

Нед я дай да поразгледам vbs скрипта....

phrozencrew
Вто, 14.12.10, 23:06

RE: RE: Как да свалим всичките си мнения от Download.BG

” Нед я дай да поразгледам vbs скрипта.... „
След като се логнеш през IE можеш да запалиш тоя скрипт, обаче гърми...:
dim strContents, fso, f1, count
dim ie
set ie = WScript.CreateObject("InternetExplorer.Application")
set fso = CreateObject("Scripting.FileSystemObject")
 
For count = 1 to 68
set f1=fso.CreateTextFile(count & ".html",True)
ie.visible =false
ie.navigate "http://www.download.bg/index.php?cls=users&mtd=ownpostings&id=229067&h=b7476a7d6100ca10ee3464b11704fe9d&p=" & count
do while ie.busy=true
loop
strContents =ie.document.documentelement.innerhtml
f1.Write strContents
WScript.Sleep(2000)
Next
ie.quit
set ie =nothing

Не мога да разбера защо вади странни грешки при записа на файл, примерно. Другото, което гърми при мен е, това че не записва някои страници до края. Просто стига до определен текст и продължава със следващата страница. Хм...

редактиран от phrozencrew на 14.12.10 23:08
anonymous
Сря, 15.12.10, 00:30
Нед виж за .mht CreateObject("CDO.Message")

Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
Const adTypeBinary = 1 'Binary data
Const adTypeText = 2 '(Default) Text data

URL = "http://www.download.bg/"
DiskFile = "test.mht"

Set objMessage = CreateObject("CDO.Message")
objMessage.CreateMHTMLBody URL
SaveToFile objMessage, DiskFile

Sub SaveToFile(Msg, Fn)
Dim Strm, Dsk

Set Strm = CreateObject("ADODB.Stream")
Strm.Type = adTypeText
Strm.Charset = "US-ASCII"
Strm.Open
Set Dsk = Msg.DataSource
Dsk.SaveToObject Strm, "_Stream"
Strm.SaveToFile Fn, adSaveCreateOverWrite

End Sub

...

stoqncho я по спокойно никой не те "2. Не ми пречи да ме използваш за опитно зайче и да се еее.....баваш на мой гръб."

electric_cc
Сря, 15.12.10, 06:02
Предлагам за експериментиране две процедури на VB6. Едната отваря страницата на download.bg, а другата трета страница на постингите на Стоянчо (да е жив и здрав и корав). Трябва да измислите как да се логнете и да извлечете страниците като ги запишете във файл.

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hwnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

Private Sub cmdLogin_Click()
 Username$ = "???????"
 Parola$ = "????"
 a$ = "http://www.download.bg/"
 ShellExecute Me.hwnd, "open", a$, vbNullString, "C:\", ByVal 1&
End Sub

Private Sub cmdOpen_Click()
 x = 3
 a$ = "http://www.download.bg/index.php?cls=users&mtd=ownpostings&id=229067&h=b7476a7d6100ca10ee3464b11704fe9d&p=" & CStr(x)
 ShellExecute Me.hwnd, "open", a$, vbNullString, "C:\", ByVal 1&
End Sub

редактиран от electric_cc на 15.12.10 06:03
редактиран от electric_cc на 15.12.10 06:10
electric_cc
Сря, 15.12.10, 14:32
За улеснение на програмистите, логването може да стане така:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hwnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

Private Sub cmdLogin_Click()
 Username$ = "?????????" 'тук трябва да си запишете съответните параметри
 Parola$ = "????????"
 L$ = "cls=Users&mtd=Login&ref=&nick=" + Username$ + "&password=" + Parola$ + "&action=%D0%92%D1%85%D0%BE%D0%B4"
 a$ = "http://www.download.bg/index.php?" + L$
 ShellExecute Me.hwnd, "open", a$, vbNullString, "C:\", ByVal 1&
End Sub

< 1 2 3 4 5 6 7 >

Коментар

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