Что нового

[Сеть, интернет] Проверки наличия УДАЛЕННЫХ сообщений ВКонтакте.

dim4ik))

Новичок
Сообщения
17
Репутация
2
Всем доброго времени суток!

Появилась необходимость написать программулинку которая могла бы проверять наличие удаленных сообщений вконтакте.

История развития ниже.
Суть программки:

-Указываем программе логин-пароль от вконтакте.
-Указываем с какого по какой id сообщения проверять.
(для каждого сообщения отправленного или принятого есть свой id "http://vk.com/mail?act=show&id=11111" в данном случае id=11111 (id идут по порядку, нумерация продолжается при отправке и при получении сообщений). если сообщение существует то оно открывается... если нет- то перенаправляет на страницу сообщений "http://vk.com/mail" );
суть программки как раз в нахождении этих самых сообщений которые были удалены (которые перенаправляют на страницу "http://vk.com/mail")
-Логинится на сайте vk.com
-Проверяет наличие удаленных сообщений
-создает txt файлик со ссылками на удаленные сообщения

P.S. Программа нужна для себя. Если у кого найдется желание и время помочь- буду очень благодарен.
P.P.S. Тему оформляю первый раз- по этому модераторов прошу простить новичку за возможные ошибки в оформлении!




Добавлено:
Сообщение автоматически объединено:

Как пройти логинизацию вроде нашел:
Код:
#include <IE.au3>

$sLogin = 'Логин'
$sPass = 'Пароль'
$sUrl = 'http://vk.com'

$oIE = _IECreate($sUrl)
If @error Then Exit 13
For $i = 1 To 1
    $oForm = _IEGetObjById($oIE, 'quick_login_form');ищем форму авторизации (обычно авторизация проходит через форму)
    If @error Then ExitLoop
    
    ;остальные элементы находятся внутри этой формы:
    $oEmail = _IEFormElementGetObjByName($oForm, 'email');код страницы: <input type="text" name="ID"...
    If @error Then ExitLoop
    $oPass = _IEFormElementGetObjByName($oForm, 'pass');код страницы: <input type="password" name="Password"...
    If @error Then ExitLoop
    _IEFormElementSetValue($oEmail, $sLogin);заполняем поля
    If @error Then ExitLoop
    _IEFormElementSetValue($oPass, $sPass);заполняем поля
    If @error Then ExitLoop
   
    
    _IEFormSubmit($oForm);отправляем данные
    If @error Then ExitLoop
Next
If @error Then
    _IEQuit($oIE)
    Exit 13
Else
   
    MsgBox(64, 'Info', 'OK')
EndIf

За этот код благодарность модератору Madmasles




Добавлено:
Сообщение автоматически объединено:

На данный момент программка имеет следующий вид:
Код:
#include <IE.au3>
$sId1 = 24900 ;начало диапазона id сообщений
$sId2 = 24950 ;конец диапазона id сообщений
Global $i
$sLogin = 'ЛОГИН'
$sPass = 'ПАРОЛЬ'
$sUrl = 'http://vk.com'

$oIE = _IECreate($sUrl)
If @error Then Exit 13
For $i = 1 To 1
    $oForm = _IEGetObjById($oIE, 'quick_login_form');ищем форму авторизации (обычно авторизация проходит через форму)
    If @error Then ExitLoop
    ;код страницы: <form id="LoginForm"...
    ;остальные элементы находятся внутри этой формы:
    $oEmail = _IEFormElementGetObjByName($oForm, 'email');код страницы: <input type="text" name="ID"...
    If @error Then ExitLoop
    $oPass = _IEFormElementGetObjByName($oForm, 'pass');код страницы: <input type="password" name="Password"...
    If @error Then ExitLoop
    _IEFormElementSetValue($oEmail, $sLogin);заполняем поля
    If @error Then ExitLoop
    _IEFormElementSetValue($oPass, $sPass);заполняем поля
    If @error Then ExitLoop
   
    
    _IEFormSubmit($oForm);отправляем данные
    If @error Then ExitLoop
Next
If @error Then
    _IEQuit($oIE)
    Exit 13
Else
    ;здесь я бы еще проверил правильность авторизации по тексту какого-либо элемента
    MsgBox(64, 'Info', 'OK')
 EndIf
For $i = $sId1 to $sId2 
   Sleep(10)
   $sUrlx = 'http://vk.com/mail?act=show&id='&$i
   $oIE = _IECreate($sUrlx)
   
Next

Сейчас умеет
-Логиниться на сайте vk.com
-Открывает по очереди окна браузера с сообщениями по указанным выше id
Проверку наличия удаленных сообщений делаю визуально.

Временно не получается:
Сделать проверку перенаправила ли страница с удаленным сообщением (http://vk.com/mail?act=show&id='&$i) на страницу http://vk.com/mail. Если у кого есть какие-то идеи буду рад почитать!


Добавлено:
Сообщение автоматически объединено:

Написал небольшое GUI для удобства... так что теперь программка имеет интерфейс...
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#Region ### START Koda GUI section ### Form=C:\Users\Дмитрий\Desktop\Form1.kxf

   Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Form1", 272, 240, 406, 195)
GUISetCursor (0)
GUISetBkColor(0xFFFFFF)
$sLg = GUICtrlCreateInput("", 80, 64, 185, 21)
GUICtrlCreateLabel("Логин", 8, 64, 67, 21)
GUICtrlSetFont(-1, 16, 400, 0, "Mistral")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlCreateLabel("Пароль", 8, 97, 67, 21)
GUICtrlSetFont(-1, 17, 400, 0, "Mistral")
GUICtrlSetColor(-1, 0x0000FF)
$sPas = GUICtrlCreateInput("", 80, 97, 185, 21)
GUICtrlCreateLabel("ID_1", 8, 137, 67, 21)
GUICtrlSetFont(-1, 16, 400, 0, "Mistral")
GUICtrlSetColor(-1, 0x0000FF)
$sI1 = GUICtrlCreateInput("", 80, 136, 185, 21)
GUICtrlCreateLabel("ID_2", 8, 169, 67, 21)
GUICtrlSetFont(-1, 16, 400, 0, "Mistral")
GUICtrlSetColor(-1, 0x0000FF)
$sI2 = GUICtrlCreateInput("", 80, 168, 185, 21)
GUICtrlCreateLabel("VK DELL MAIL CHECK", 0, 16, 266, 29)
GUICtrlSetFont(-1, 17, 800, 0, "Times New Roman")
GUICtrlSetColor(-1, 0x000080)
$go = GUICtrlCreateButton("Check THIS!", 8, 208, 259, 25)
GUICtrlSetOnEvent(-1, "goPressed")
GUICtrlSetBkColor(-1, 0x008000)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd


Global $i

Func goPressed()
   $sLogin = GUICtrlRead($sLg)
   $sPass = GUICtrlRead($sPas)
   $sId1 = GUICtrlRead($sI1)
   $sId2 = GUICtrlRead($sI2)
   
$sUrl = 'http://vk.com';ИМХО, проще сразу открывать страницу на русском языке

$oIE = _IECreate($sUrl)
If @error Then Exit 13
For $i = 1 To 1
    $oForm = _IEGetObjById($oIE, 'quick_login_form');ищем форму авторизации (обычно авторизация проходит через форму)
    If @error Then ExitLoop
    ;код страницы: <form id="LoginForm"...
    ;остальные элементы находятся внутри этой формы:
    $oEmail = _IEFormElementGetObjByName($oForm, 'email');код страницы: <input type="text" name="ID"...
    If @error Then ExitLoop
    $oPass = _IEFormElementGetObjByName($oForm, 'pass');код страницы: <input type="password" name="Password"...
    If @error Then ExitLoop
    _IEFormElementSetValue($oEmail, $sLogin);заполняем поля
    If @error Then ExitLoop
    _IEFormElementSetValue($oPass, $sPass);заполняем поля
    If @error Then ExitLoop
   
    
    _IEFormSubmit($oForm);отправляем данные
    If @error Then ExitLoop
Next
If @error Then
    _IEQuit($oIE)
    Exit 13
Else
    ;здесь я бы еще проверил правильность авторизации по тексту какого-либо элемента
    MsgBox(64, 'Info', 'OK')
 EndIf
For $i = $sId1 to $sId2 
   Sleep(10)
   $sUrlx = 'http://vk.com/mail?act=show&id='&$i
   $oIE = _IECreate($sUrlx)
   
Next

EndFunc



ЛЮДИ ДОБРЫЕ ПОМОГИТЕ СДЕЛАТЬ ПРОВЕРКУ ПЕРЕНАПРАВЛЯЕТ ЛИ СТРАНИЦА НА ДРУГОЙ URL ИЛИ НЕТ!
HELP!!HELP!!HELP!!HELP!!HELP!!HELP!!HELP!!HELP!!HELP!!HELP!!!


Добавлено:
Сообщение автоматически объединено:

ПРОГРАММА НАПИСАНА
Форуму спасибо за помощь! По кускам по кускам и программка собралась.

Что программа умеет:

-Указываем программе логин-пароль от вконтакте.
-Указываем с какого по какой id сообщения проверять.
-Логинится на сайте vk.com
-Проверяет наличие удаленных сообщений
-создает txt файлик со ссылками на удаленные сообщения

Если вдруг кому понадобится сия программка- ниже выкладываю исходники.
Мне нужна была чтобы проверить свою девушку)) (а точнее удаляет(прячет) ли от меня переписки вконтакте или нет!)
Оказалось что не прячет)) ТАК ЧТО ДОВЕРЯЙТЕ СВОИМ ДЕВУШКАМ И НЕ ПРИДЕТСЯ ПИСАТЬ ТАКИЕ ГЛУПЫЕ ПРОГРАММЫ))

Первая полностью работоспособная версия программы имеет следующий вид
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#Region ### START Koda GUI section ### Form=C:\Users\Дмитрий\Desktop\Form1.kxf

   Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Form1", 272, 240, 406, 195)
GUISetCursor (0)
GUISetBkColor(0xFFFFFF)
$sLg = GUICtrlCreateInput("", 80, 64, 185, 21)
GUICtrlCreateLabel("Логин", 8, 64, 67, 21)
GUICtrlSetFont(-1, 16, 400, 0, "Mistral")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlCreateLabel("Пароль", 8, 97, 67, 21)
GUICtrlSetFont(-1, 17, 400, 0, "Mistral")
GUICtrlSetColor(-1, 0x0000FF)
$sPas = GUICtrlCreateInput("", 80, 97, 185, 21)
GUICtrlCreateLabel("ID_1", 8, 137, 67, 21)
GUICtrlSetFont(-1, 16, 400, 0, "Mistral")
GUICtrlSetColor(-1, 0x0000FF)
$sI1 = GUICtrlCreateInput("", 80, 136, 185, 21)
GUICtrlCreateLabel("ID_2", 8, 169, 67, 21)
GUICtrlSetFont(-1, 16, 400, 0, "Mistral")
GUICtrlSetColor(-1, 0x0000FF)
$sI2 = GUICtrlCreateInput("", 80, 168, 185, 21)
GUICtrlCreateLabel("VK DELL MAIL CHECK", 0, 16, 266, 29)
GUICtrlSetFont(-1, 17, 800, 0, "Times New Roman")
GUICtrlSetColor(-1, 0x000080)
$go = GUICtrlCreateButton("Check THIS!", 8, 208, 259, 25)
GUICtrlSetOnEvent(-1, "goPressed")
GUICtrlSetBkColor(-1, 0x008000)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd


Global $i

Func goPressed()
   $sLogin = GUICtrlRead($sLg)
   $sPass = GUICtrlRead($sPas)
   $sId1 = GUICtrlRead($sI1)
   $sId2 = GUICtrlRead($sI2)
   
$sUrl = 'http://vk.com';ИМХО, проще сразу открывать страницу на русском языке

$oIE = _IECreate($sUrl)
If @error Then Exit 13
For $i = 1 To 1
    $oForm = _IEGetObjById($oIE, 'quick_login_form');ищем форму авторизации (обычно авторизация проходит через форму)
    If @error Then ExitLoop
    ;код страницы: <form id="LoginForm"...
    ;остальные элементы находятся внутри этой формы:
    $oEmail = _IEFormElementGetObjByName($oForm, 'email');код страницы: <input type="text" name="ID"...
    If @error Then ExitLoop
    $oPass = _IEFormElementGetObjByName($oForm, 'pass');код страницы: <input type="password" name="Password"...
    If @error Then ExitLoop
    _IEFormElementSetValue($oEmail, $sLogin);заполняем поля
    If @error Then ExitLoop
    _IEFormElementSetValue($oPass, $sPass);заполняем поля
    If @error Then ExitLoop
   
    
    _IEFormSubmit($oForm);отправляем данные
    If @error Then ExitLoop
Next
If @error Then
    _IEQuit($oIE)
    Exit 13
Else
    ;здесь я бы еще проверил правильность авторизации по тексту какого-либо элемента
    MsgBox(64, 'Info', 'OK')
 EndIf
For $i = $sId1 to $sId2 
   Sleep(10)
   $sUrlx = 'http://vk.com/mail?act=show&id='&$i
   $oIE = _IECreate($sUrlx,0)
   $bURL=ControlGetText("[CLASS:IEFrame]","","[CLASS:Edit;INSTANCE:1]")
   If WinExists("[CLASS:IEFrame]") Then
    if $bURL == $sUrlx Then
	   	   ProcessClose ("iexplore.exe")
	Else
	   FileWrite(@ScriptDir & "\Log.txt",$sUrlx &@CRLF)  
	   ProcessClose ("iexplore.exe")
	EndIf
EndIf	
Next

EndFunc

Завтра немного подшаманю и сделаю программку немного шустрее.


Добавлено:
Сообщение автоматически объединено:

Если будет не лень!













Суть программы: Данная программа написана для того чтобы можно было быстро проверить удалялись сообщения в контакте(в определенном диапазоне id сообщений) или не удалялись.

Принцип действия программы: Логинится ВКонтакте с указанным вводом логина и пароля. Поочередно открывает все сообщения из указанного диопазона id сообщений, если сообщение открылось(что означает что оно не удалено)- просто закрывает браузер, а если сообщение не открылось и открылась вместо него общая страница сообщений (http://vk.com/mail)- пишет ссылку на сообщение которое не открылось в файл DMU.txt (DELETED MESSAGES URL). Это все что умеет делать эта программка.

Окончательная версия программы.
Добавил описание к каждой строчке программы(практически к каждой). Возможно кому-то когда пригодится. Да и новичкам таким как я гораздо понятнее когда каждая строчка прокомментирована.

Исходный код программки ниже:
Код:
;НАЧАЛО
;=========Подключение модулей==============
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
;=========Подключение модулей==============

Opt("GUIOnEventMode", 1) ;включаем кнопки в Графическом интерфейсе
$Form1 = GUICreate("Form1", 272, 240, 406, 195); создаем форму графического интерфейса
GUISetBkColor(0xFFFFFF) ;задаем цвет фона графического интерфейса
$sLn = GUICtrlCreateInput("", 80, 64, 185, 21); создаем поле ввода логина обзываем его $sLn
GUICtrlCreateLabel("Логин", 8, 64, 67, 21); текст на против поля ввода логина
GUICtrlSetFont(-1, 16, 400, 0, "Mistral"); указываем шрифт
GUICtrlSetColor(-1, 0x0000FF); указываем цвет шрифта
GUICtrlCreateLabel("Пароль", 8, 97, 67, 21);текст на против поля ввода пароля
GUICtrlSetFont(-1, 17, 400, 0, "Mistral"); указываем шрифт
GUICtrlSetColor(-1, 0x0000FF); указываем цвет шрифта
$sPs = GUICtrlCreateInput("", 80, 97, 185, 21); создаем поле ввода пароля обзываем его $sPs
GUICtrlCreateLabel("ID_1", 8, 137, 67, 21); текст на против поля ввода начала диапазонов id сообщения
GUICtrlSetFont(-1, 16, 400, 0, "Mistral"); указываем шрифт
GUICtrlSetColor(-1, 0x0000FF); указываем цвет шрифта
$sI1 = GUICtrlCreateInput("", 80, 136, 185, 21);поле ввода начала диапазонов id сообщения обзываем его $sI1
GUICtrlCreateLabel("ID_2", 8, 168, 67, 21); текст на против поля ввода конца диапазонов id сообщения
GUICtrlSetFont(-1, 16, 400, 0, "Mistral"); указываем шрифт
GUICtrlSetColor(-1, 0x0000FF); указываем цвет шрифта
$sI2 = GUICtrlCreateInput("", 80, 168, 185, 21);поле ввода конца диапазонов id сообщения обзываем его $sI2
GUICtrlCreateLabel("VK DMC", 0, 16, 266, 29); название программы VK DELETED MESSAGES CHECK
GUICtrlSetFont(-1, 14, 800, 0, "Times New Roman"); указываем шриф
GUICtrlSetColor(-1, 0x000080); указываем цвет шрифта
$go = GUICtrlCreateButton("Check THIS!", 8, 208, 259, 25); кнопка старта работы программы
GUICtrlSetOnEvent(-1, "goPressed");включаем кнопку и обзываем ее для дальнейшего вызова в программе
GUICtrlSetBkColor(-1, 0x008000);цвет фона кнопки
GUISetState(@SW_SHOW); не знаю что за хрень... KODA добавил..

;=======не знаю что это, но если удалить программа тутже закрывается==========
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
;=======не знаю что это, но если удалить программа тутже закрывается==========

Global $i; объявляем переменную $i

Func goPressed(); действия выполняемые по нажатию кнопки
$sLogin = GUICtrlRead($sLn); считываем значение введенное в поле ввода логина и присваиваем его переменной $sLogin
$sPass = GUICtrlRead($sPs); считываем значение введенное в поле ввода пароля и присваиваем его переменной $sPass
$sId1 = GUICtrlRead($sI1); считываем значение введенное в поле ввода id начала диапазона сообщений и присваиваем его переменной $sId1
$sId2 = GUICtrlRead($sI2); считываем значение введенное в поле ввода id конца диапазона сообщений и присваиваем его переменной $sId2
   
$sUrl = 'http://vk.com';адрес сайта присваеваем переменной $sUrl

$oIE = _IECreate($sUrl);открываем сайт указанный в переменной $sUrl
If @error Then Exit 13 ; условие при ошибке
For $i = 1 To 1 ;поиска формы входа ввода логина и пароля
    $oForm = _IEGetObjById($oIE, 'quick_login_form') ;поиск формы входа на сайт
    If @error Then ExitLoop; если ошибка- выход
    
    $oEmail = _IEFormElementGetObjByName($oForm, 'email') ;поиск поля ввода логина
    If @error Then ExitLoop; если ошибка- выход
    $oPass = _IEFormElementGetObjByName($oForm, 'pass');поиск поля ввода пароля
    If @error Then ExitLoop; если ошибка- выход
    _IEFormElementSetValue($oEmail, $sLogin);ввод логина 
    If @error Then ExitLoop; если ошибка- выход
    _IEFormElementSetValue($oPass, $sPass);ввод пароля
    If @error Then ExitLoop; если ошибка- выход
   
    
    _IEFormSubmit($oForm);входим на сайт
    If @error Then ExitLoop;если ошибка- выход
Next
If @error Then ;условие выполняемое при ошибке
   MsgBox(64, 'Информация', 'Данное сообщение возникает в трех случаях: 1- вы уже залогинены на сайте- просто нажмите ок и программа продолжит свою работу; 2- введен неверный логин/пароль- остановите работу программы перед нажатием ок; 3- вылетела капча- введите капчу и нажмите ок'); объяснение почему вышла ошибка
    
    
Else
    
    MsgBox(64, 'Информация', 'Нажмите ОК для начала поиска удаленных сообщений из выбранного вами диапазона id'); маленькая пауза перед началом работы
 EndIf
For $i = $sId1 to $sId2 ; рабочий цикл, присваиваем переменной $i значение рассматриваемого id сообщения... расшифровка: от начального id сообщения до конечного id сообщения делай
     Sleep(10) ;немного паузы
     $sUrlx = 'http://vk.com/mail?act=show&id='&$i ;присваиваем переменной $sUrlx ссылку на проверяемое сообщение 
     $oIE = _IECreate($sUrlx,0); открываем полученную ссылку
     $bURL=ControlGetText("[CLASS:IEFrame]","","[CLASS:Edit;INSTANCE:1]"); смотрим какой URL при этом открылся присваивам его значение переменной $bURL
     If WinExists("[CLASS:IEFrame]") Then ;подцикл сравнивания что открывали, а что открыли
       if $bURL == $sUrlx Then; сравниваем открывамый URL и тот URL который при этом получили расшифровка: если открываемый URL такойже как и тот который открылся то
	   	   ProcessClose ("iexplore.exe"); закрываем программу InternetExplorer
	   Else;если открываемый URL отличается от того который открылся
	      FileWrite(@ScriptDir & "\DMU.txt",$sUrlx &@CRLF);записываем ссылку на удаленное сообщение в файл 
	       ProcessClose ("iexplore.exe"); закрываем программу InternetExplorer
	    EndIf
      EndIf	
      
Next

EndFunc

;Конец

Еще раз благодарность форуму http://autoit-script.ru

С Вами познаю AutoIt!!!
 
Верх