Всем привет, нужно парсить сайт находящийся в сети тор. Есть некоторые наработки. Из того, что получилось - серфить средствами Autoit через тор. Но при этом *.onion группа доменная не открывается.
Пример работающего вариант:
Обычные сайты без проблем открывает через тор, а вот *.onion не хочет, пишет, что переход отмене.
Но более предпочтительный вариант, сделать запрос через tcp, т.к. нужно консольное приложение в итогом результате. В эту сторону "копать" у меня хуже вышло.
Сделал такой набросок:
Но... Проблема тут уже в том, что Тор отвечает, что не работает через HTTP Proxy. Т.е. нужно правильно составить запрос, чтобы получить ответ с содержанием страницы. И на этом этапе у меня ступор, нужна помощь, уже неделю штудирую интернет безрезультатно, знаний не хватает.
Пример работающего вариант:
Код:
#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <WindowsConstants.au3>
Local $oIE = _IECreateEmbedded()
GUICreate("Embedded Web control Test", 640, 580, _
(@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
$WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
GUICtrlCreateObj($oIE, 10, 40, 600, 360)
GUISetState(@SW_SHOW)
_UseTOR()
_SetUserAgent("Linux, Firefox")
_IENavigate($oIE, "http://2ip.ru")
While 1
Local $iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEnd
GUIDelete()
Exit
Func _SetProxy($proxy, $proxybypass = "")
Local $INTERNET_OPTION_PROXY = 38
Local $INTERNET_OPEN_TYPE_PROXY = 3
Local $tBuff = DllStructCreate("dword;ptr;ptr")
DllStructSetData($tBuff, 1, $INTERNET_OPEN_TYPE_PROXY)
Local $pproxy = DllStructCreate("char[" & (StringLen($proxy) + 1) & "]")
DllStructSetData($pproxy, 1, $proxy)
DllStructSetData($tBuff, 2, DllStructGetPtr($pproxy))
Local $pproxybypass = DllStructCreate("char[" & (StringLen($proxybypass) + 1) & "]")
DllStructSetData($pproxybypass, 1, $proxybypass)
DllStructSetData($tBuff, 3, DllStructGetPtr($pproxybypass))
$chk_UrlMkSetSessionOption = DllCall("urlmon.dll", "long", "UrlMkSetSessionOption", "dword", $INTERNET_OPTION_PROXY, "ptr", DllStructGetPtr($tBuff), "dword", DllStructGetSize($tbuff), "dword", 0)
EndFunc
Func _UseTOR($TORPort = 9150)
_SetProxy("socks=127.0.0.1:"&$TORPort)
EndFunc
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
Обычные сайты без проблем открывает через тор, а вот *.onion не хочет, пишет, что переход отмене.
Но более предпочтительный вариант, сделать запрос через tcp, т.к. нужно консольное приложение в итогом результате. В эту сторону "копать" у меня хуже вышло.
Сделал такой набросок:
Код:
$proxy = "127.0.0.1"
$port = 9150
$domain = "hss3uro2hsxfogfq.onion"
$path = "/contact.php"
$agent = "Test"
$request = "GET " & $path & " HTTP/1.1" & @CRLF
$request &= "Host: " & $domain & "" & @CRLF
$request &= "User-Agent: " & $agent & "" & @CRLF
$request &= "Connection: close" & @CRLF
$request &= "Accept: application/xhtml+xml,html/text,application/xml;q=0.9" & @CRLF & @CRLF
TCPStartup()
$socket = TCPConnect($proxy, $port)
If $socket = -1 Then Exit
TCPSend($socket, $request)
While 1
$recv = TCPRecv($socket, 2048)
If $recv <> "" Then
ConsoleWrite($recv)
ExitLoop
EndIf
WEnd
TCPShutdown()
Но... Проблема тут уже в том, что Тор отвечает, что не работает через HTTP Proxy. Т.е. нужно правильно составить запрос, чтобы получить ответ с содержанием страницы. И на этом этапе у меня ступор, нужна помощь, уже неделю штудирую интернет безрезультатно, знаний не хватает.