Что нового

Получить капчу на vk.com

Сообщения
36
Репутация
-1
Привет. Проблема в том, что функция InetGet то сохраняет капчу, но не ту которая на самом деле появляется на сайте. Изображение капчи сайт получает из подобной ссылки - https://vk.com/captcha.php?sid=911567220450&s=1, где sid фактически не имеет значения, потому что при каждом обновлении страницы капча меняется на другую. Потому и InetGet открывает новое соединение и получает совсем другую капчу. Получение из кеша не дало результата. Подскажите, как все таки получить реальную капчу?

Код:
#include <IE.au3>
$oIE2 = _IECreate("https://vk.com/id261774128")
$oBtns = _IETagNameGetCollection($oIE2, "button")
For $oBtn In $oBtns
   $onclick = $oBtn.getAttribute("onclick")
   Select
   Case StringInStr($onclick, "Profile.toggleFriend") > 0
   _IEAction($oBtn, "click")
   _IELoadWait($oIE2)
   $osubscribe = _IEGetObjById($oIE2, "profile_am_subscribed")
   If @error = $_IEStatus_NoMatch Then
   $oImgs = _IEImgGetCollection($oIE2)
   For $oImg In $oImgs
	  If StringInStr($oImg.src, "captcha.php") > 0 Then
	  InetGet($oImg.src, @DesktopDir & "\" & "captcha.png")
	  EndIf
   Next
   EndIf
EndSelect
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
fyviffitoffo [?]
InetGet то сохраняет капчу, но не ту которая на самом деле появляется на сайте
Конечно.

потому что при каждом обновлении страницы капча меняется на другую
Верно.

Когда вы обновляете всю страницу httрs://vk.com/id261774128 на которой captcha, она меняется?
Сдается мне, что нет или я ошибаюсь?
 
Автор
fyviffitoffo
Сообщения
36
Репутация
-1
Когда вы обновляете всю страницу httрs://vk.com/id261774128 на которой captcha, она меняется?
Тогда страница стает такой какой была изначально, то есть копка "Добавить в друзья" опять доступная, и тогда новый клик - новая капча. Даже без обновления, если просто закрыть капчу, а потом опять ее вызвать, то капча уже другая.
нашел такую тему - http://autoit-script.ru/index.php?topic=14694.0, но почему то ничего не помещается в буфер.
Код:
$osubscribe = _IEGetObjById($oIE2, "profile_am_subscribed")
  If @error = $_IEStatus_NoMatch Then
   $oImgs = _IEImgGetCollection($oIE2)
   For $oImg In $oImgs
	  If StringInStr($oImg.src, "captcha.php") > 0 Then
	  $oCtlRange = $oImg.document.body.createControlRange()
	  $oCtlRange.addElement($oImg)
	  $oCtlRange.execCommand('Copy', False)
	  _ClipBoard_Open(0)
	  $hBitmap = _ClipBoard_GetDataEx($CF_BITMAP)
	  _ClipBoard_Close()
	  _GDIPlus_Startup()
	  $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
	  _GDIPlus_ImageSaveToFile($hImage, @DesktopDir & "\" & "captcha.png")
	  _GDIPlus_BitmapDispose($hImage)
	  _GDIPlus_Shutdown()
	  EndIf
   Next
   EndIf



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

После исправления кода проблема решилась!
 
Верх