Что нового

Смена user-agent в IE через DllCall UrlMkSetSessionOption

mir546

Новичок
Сообщения
27
Репутация
0
Доброго дня/утра/вечера.
Перелазил кучу форумов и наших и зарубежных и не нашёл. :blink:
Нужно поменять user-agent,

Такое решение не подходит, потому что в данном случае user-agent прописывается только в первом запросе, в фоновых запросах или при перезагрузке страницы будет участвовать базовый user-agent
Код:
$oIE = _IECreate()
$oIE.navigate('http://2ip.ru/', 2, '', '', 'User-Agent: My super special user agent string.')


Пробовал изменить user-agent через реестр. Не полоучилось. Меняется только частично. Похоже что это когда-то работало но не сейчас. :-X

Для решения данной задачи нашел такой код, но проблема в том что мне не нужно создавать GUI.
Код:
#include <IE.au3>

GUICreate("Test User-Agent String", 700, 500)
_IEErrorHandlerRegister()
$oIE = _IECreateEmbedded()
GUICtrlCreateObj($oIE, 10, 10, 680, 480)
_SetUserAgent('User-Agent: My super special user agent string.')
_IENavigate($oIE,"http://2ip.ru/")
sleep(1000)
GUISetState()

While GUIGetMsg() <> -3
WEnd

Func _SetUserAgent($agent)
    $agentLen = StringLen($agent)
    Dim $tBuff = DllStructCreate("char["&$agentLen&"]")
    DllStructSetData($tBuff, 1, $agent)
    $chk_UrlMkSetSessionOption = DllCall("urlmon.dll", "long", "UrlMkSetSessionOption", "dword", 0x10000001, "ptr", DllStructGetPtr($tBuff), "dword", $agentLen, "dword", 0)
EndFunc


Как сделать так, чтобы с помощью
Код:
DllCall("urlmon.dll", "long", "UrlMkSetSessionOption", "dword", 0x10000001, "ptr", DllStructGetPtr($tBuff), "dword", $agentLen, "dword", 0)

поменять user-agent при обычном
Код:
$oIE = _IECreate()


Пробовал вызывать функцию _SetUserAgent($agent) в разных участках кода, до/после _IECreate() - результат отрицательный.
Есть идеи как решить данную задачу? :scratch:


UPD:
Протестировал вариант с GUI из примера выше. Он вообще ни как не подходит. Потому что JS в нем не работает. Точней работает, но запросы не шлёт, да и в целом работает не корректно.
Попробую погуглить на счёт JS в GUI.
 
Верх