Что нового

[Сеть, интернет] _IELinkClickByText() не передаёт реферал

yoss

Новичок
Сообщения
4
Репутация
0
Привет всем гуру Autoit!
Камрады, столкнулся с весьма любопытной ситуацией: такой код реф возвращает:
Код:
$oIE = _IECreate("", 0, 1)
_IENavigate($oIE, "http://ya.ru/")
_IELoadWait($oIE)
ConsoleWrite("Referer -> " & _IEPropertyGet($oIE,"referrer") & @CRLF)
_IENavigate($oIE, "http://yandex.ua/")
_IELoadWait($oIE)
ConsoleWrite("Referer -> " & _IEPropertyGet($oIE,"referrer") & @CRLF)
_IELinkClickByText($oIE,"Маркет")
_IELoadWait($oIE)
ConsoleWrite("Referer -> " & _IEPropertyGet($oIE,"referrer") & @CRLF)
_IEQuit($oIE)


а такой, нет:

Код:
$oIE = _IECreate("", 0, 1)
_IENavigate($oIE, "http://ya.ru/")
_IELoadWait($oIE)
ConsoleWrite("Referer -> " & _IEPropertyGet($oIE,"referrer") & @CRLF)
_IENavigate($oIE, "http://yandex.ua/")
_IELoadWait($oIE)
ConsoleWrite("Referer -> " & _IEPropertyGet($oIE,"referrer") & @CRLF)
_IELinkClickByText($oIE,"Карты")
_IELoadWait($oIE)
ConsoleWrite("Referer -> " & _IEPropertyGet($oIE,"referrer") & @CRLF)
_IEQuit($oIE)


т.е. при переходе по ссылке
http://market.yandex.ua/?clid=505 - реф передаётся
а при переходе по ссылке
http://maps.yandex.ua/ - реф НЕ передаётся


В чём дело - не пойму :stars: . Наверняка этому есть простое и логичное объяснение, но я его не нашёл. Может кто знает в чём тут дело?

Заранее благодарен всем неравнодушным
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Модератор.






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

yoss [?]
В чём дело - не пойму
Я, честно говоря, не вижу проблемы.
Код:
#include<IE.au3>
$oIE = _IECreate("http://yandex.ua/")
_IELinkClickByText($oIE, "Карты")
ConsoleWrite("Referer -> " & _IEPropertyGet($oIE, "referrer") & @CRLF)
_IEQuit($oIE)
 
Автор
Y

yoss

Новичок
Сообщения
4
Репутация
0
Знаете, попробовал и заработало. Обрадовался. Попробовал ещё раз - работать перестало.
Картинку вложил. Видео здесь: http://youtu.be/Uf2fou-EAp8
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
yoss
Попробуйте напрямую минуя функции.
Код:
;...
;ConsoleWrite("Referer -> " & _IEPropertyGet($oIE, "referrer") & @CRLF)
ConsoleWrite("Referer -> " & $oIE.document.referrer & @CRLF)
;...
 
Автор
Y

yoss

Новичок
Сообщения
4
Репутация
0
Garrett

Не помогает. Однако, один раз это сработало и через функцию. Я, было, подумал что это куки чудят, почистил - не помогло...
И потом... почему на "Погоде" это работает, а на "Картах" нет...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Какая у вас версия IE?
Вот вам "голый" код, попробуйте.
Код:
$oIE = ObjCreate("InternetExplorer.Application")
$oIE.Visible = 1
$oIE.Navigate("http://yandex.ua/")

While 1
	If $oIE.readyState = 4 Then
		While 1
			If String($oIE.document.readyState) == "complete" Then ExitLoop 2
			Sleep(25)
		WEnd
	EndIf
	Sleep(25)
WEnd

$oLinks = $oIE.document.links
For $oLink In $oLinks
	If Not $oLink.outerText Then ContinueLoop
	If String($oLink.outerText) == StringStripWS("Карты", 3) Then
		$oLink.click
		ExitLoop
	EndIf
Next

While 1
	If String($oIE.document.readyState) == "complete" Then ExitLoop
	Sleep(25)
WEnd

ConsoleWrite("Referer -> " & $oIE.document.referrer & @CRLF)


Если и это не работает, тогда попробуйте сменить версию Autoit.
 
Автор
Y

yoss

Новичок
Сообщения
4
Репутация
0
У меня была 10-я. Попробовал на 11 - всё работает как надо. Так что спасибо за помощь.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 

focus

Осваивающий
Сообщения
69
Репутация
20
Привет.
Может немного не в тему, но вот такая новость со страниц Хабра.
Суть:
Сегодня мы запускаем эксперимент, в рамках которого у 2% пользователей, переходящих по ссылкам из результатов поиска, заголовок Referer не будет содержать текста поискового запроса (он будет в зашифрованном виде). В дальнейшем эта практика распространится на всех пользователей Яндекса.

http://habrahabr.ru/company/yandex/blog/204886/
 
Верх