+
InetGet ist gefährlich, da dort der IE Cache verwendet werden kann und die Ergebnisse somit nicht unbedingt richtig sind.Quote:
Du könntest auf einer Website, wie z.B. [Only registered and activated users can see links. Click Here To Register...] die einfach aufgebaut ist.
Dann per INetGet / TCPSend/Recv-Packets anfordern, Stringfunktionen anwenden und fertig.
#include <WinHttp.au3>
MsgBox(0, 0, 'Your IP is: ' & _GetPublicIP())
Func _GetPublicIP()
$aIP = StringRegExp(_InetReadWinHttp('GET', 'api.hostip.info', '/get_html.php?ip='), 'IP\: (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', 3)
If IsArray($aIP) Then Return $aIP[0]
EndFunc ;==>_GetPublicIP
Func _InetReadWinHttp($sType, $sServerName, $sPath = Default, $sReferrer = Default, $sData = Default, $sHeader = Default, $fGetHeaders = Default, $iMode = Default)
Local $sUserAgent = 'Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0'
Local $hSession = _WinHttpOpen($sUserAgent)
Local $hConnect = _WinHttpConnect($hSession, $sServerName)
Local $vReturn = _WinHttpSimpleRequest($hConnect, $sType, $sPath, $sReferrer, $sData, $sHeader, $fGetHeaders, $iMode)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hSession)
Return $vReturn
EndFunc ;==>_InetReadWinHttp
<?php
header('Content-Type: text/plain');
echo $_SERVER['REMOTE_ADDR'];
?>
:mad:Quote:
Ich hab auch geschrieben das das mit TCPSend/TCPRecv-Packets geht, da brauchst du keine WinHttp UDF, da die sowieso viel zu langsam ist.
dim $hTimerWinHttp,$hTimerTCP
$hTimerWinHttp=TimerInit()
for $i = 1 to 30
_InetReadWinHttp('GET','google.com','/')
Next
ConsoleWrite('WINHTTP: '&TimerDiff($hTimerWinHttp)&@CRLF)
$hTimerTCP=TimerInit()
for $i = 1 to 30
_TCPHTTPRequest('GET','www.google.com','/?gws_rd=cr')
Next
ConsoleWrite('TCP: '&TimerDiff($hTimerTCP)&@CRLF)
WINHTTP: 11130.4397156683 TCP: 3220.66502365244
PM ;)Quote:
Desweiteren möchte ich mal deine "_TCPHTTPRequest"-Funktion sehen.
dim $hTimer=TimerInit()
dim $sIP=_REMOTE_ADDR()
MsgBox(0, 'REMOTE_ADDR', $sIP&@CRLF&@CRLF&Floor(TimerDiff($hTimer)))
Func _REMOTE_ADDR()
Local $iSocket, $sRead
TCPStartup()
$iSocket = TCPConnect(TCPNameToIP('ping.eu'), 80)
If $iSocket < 1 Then Return
TCPSend($iSocket, 'GET / HTTP/1.1' & @CRLF & _
'Host: ping.eu' & @CRLF & _
'User-Agent: AutoIt' & @CRLF & _
'Accept-Encoding: none' & @CRLF & _
'Accept: */*' & @CRLF & _
'Connection: close' & @CRLF & @CRLF)
While $sRead = ''
$sRead = TCPRecv($iSocket, 1)
WEnd
While 1
$sRead &= TCPRecv($iSocket, 1024)
If @error Then ExitLoop
WEnd
TCPCloseSocket($iSocket)
TCPShutdown()
Return StringRegExpReplace($sRead, '(?i)(?s).*Your IP is <b>(.+?)</b>.*', '\1')
EndFunc ;==>_REMOTE_ADDR
TCPSend($iSocket, 'GET / HTTP/1.1' & @CRLF & _ 'Host: ping.eu')
$sPacket = "GET / HTTP/1.1" & @CRLF & _ "Host: www.ping.eu" & @CRLF & _ @CRLF
$sPacket = "GET / HTTP/1.1" & @CRLF & _ "Host: wtfismyip.com" & @CRLF & _ @CRLF
#include <String.au3>
TCPStartUp()
$hServer = TCPConnect("212.19.62.76", 80)
If $hServer = -1 Then
MsgBox(16, "Error", "Could not retreive global IP.")
Exit
EndIf
TCPSend($hServer, "GET / HTTP/1.1" & @CRLF & "Host: www.wieistmeineip.de" & @CRLF & @CRLF)
Do
$sHTML = TCPRecv($hServer, 4096)
Until StringInStr($sHTML, '<h1 class="ip">')
TCPCloseSocket($hServer)
TCPShutdown()
$aGlobalIp = _StringBetween($sHTML, '<h1 class="ip">', "</h1>")
Global Const $sGlobalIp = $aGlobalIp[0]
MsgBox(64, "Global Ip", $sGlobalIp)
Quote:
Code:$aGlobalIp = _StringBetween($sHTML, '<h1 class="ip">', "</h1>")
$aGlobalIp =StringRegExp($sHTML, '<h1 class="ip">(.+)</h1>',3)
MsgBox(0, '', 'Deine IP ist ' & _REMOTE_ADDR())
Func _REMOTE_ADDR()
Local $iSocket, $sRead
TCPStartup()
$iSocket = TCPConnect(TCPNameToIP('ping.eu'), 80)
If $iSocket < 1 Then Return
If Not TCPSend($iSocket, 'GET / HTTP/1.1' & @CRLF & _
'Host: ping.eu' & @CRLF & _
'User-Agent: AutoIt' & @CRLF & _
'Accept-Encoding: none' & @CRLF & _
'Accept: */*' & @CRLF & _
'Connection: close' & @CRLF & @CRLF) Then Return 0
While $sRead = ''
$sRead = TCPRecv($iSocket, 1)
WEnd
While 1
$sRead &= TCPRecv($iSocket, 1024)
If @error Then ExitLoop
WEnd
TCPCloseSocket($iSocket)
TCPShutdown()
Return StringRegExpReplace($sRead, '(?i)(?s).*Your IP is <b>(.+?)</b>.*', '\1')
EndFunc ;==>_REMOTE_ADDR
_REMOTE_ADDR()