Код:
![Выделить весь код](images/misc/selectcode.png)
$sURL = "http://www.oszone.net/go.php?url=http://www.lada-auto.ru/cgi-bin/viewlist.pl?id=85544&fld=file_&tbl=vaz_catalogue_notes&ext=pdf"
$sFileName = StringRegExpReplace($sURL, '^.*/', '')
_HTTPGetFile($sURL, @DesktopDir)
Func _HTTPGetFile($sURL, $sFile, $iOptions = 0, $iBackground = 0)
Local $sHost, $sPage, $sName_To_IP, $iSocket, $sCommand, $iBytesSent, $sCurrentRecv, $sNew_URL, $sRecv
Local $sFileName_Pattern = '^(/?[^/]*/)?[^/]*\.\w{1,5}$'
Local $sHost_Pattern = '^([^:/]*://|www\.)[^/]*/.*$'
Local $sLocation_Pattern = '(?si).*Location: (.*?)[\r\n].*'
Local $sMeta_Pattern = '(?si).*<meta http-equiv=[''"]REFRESH[''"]\s*CONTENT=[''"]\d+;URL=(.*)[''"]>.*'
Local $sJS1_Pattern = '(?si).*(?:window|document)\.location\.replace\([''"](.*)[''"]\).*'
Local $sJS2_Pattern = '(?si).*(?:window|document)\.location\.href\s*=\s*[''"](.*)[''"].*'
Local $sPHP_Pattern = '(?si).*header\([''"]Location:\s*(.*)[''"]\).*'
$sHost = StringRegExpReplace($sURL, ".*://(.*?)/.*", "\1")
$sPage = StringRegExpReplace($sURL, ".*://.*?(/.*)", "\1")
TCPStartup()
$sName_To_IP = TCPNameToIP($sHost)
$iSocket = TCPConnect($sName_To_IP, 80)
If $iSocket = -1 Then
TCPShutdown()
Return SetError(1, 0, "")
EndIf
$sCommand = "HEAD " & $sPage & " HTTP/1.1" & @CRLF
$sCommand &= "Host: " & $sHost & @CRLF
$sCommand &= "User-Agent: AutoIt/" & @AutoItVersion & " (Windows; U; Windows NT 5.1; en-US; rv:1.8.1)" & @CRLF
$sCommand &= "Referer: " & $sHost & @CRLF
$sCommand &= "Connection: close" & @CRLF & @CRLF
$iBytesSent = TCPSend($iSocket, $sCommand)
If $iBytesSent = 0 Then
TCPShutdown()
Return SetError(2, @error, 0)
EndIf
While 1
$sCurrentRecv = TCPRecv($iSocket, 16)
If @error <> 0 Then
ExitLoop
EndIf
If $sCurrentRecv <> "" Then
$sRecv &= $sCurrentRecv
EndIf
WEnd
TCPCloseSocket($iSocket)
TCPShutdown()
$sNew_URL = StringRegExpReplace($sRecv, $sLocation_Pattern, '\1')
If @extended = 0 Then
$sRecv = BinaryToString(InetRead($sURL))
$sNew_URL = StringRegExpReplace($sRecv, $sMeta_Pattern, '\1')
If Not StringRegExp($sNew_URL, $sFileName_Pattern) Then
$sNew_URL = StringRegExpReplace($sRecv, $sJS1_Pattern , '\1')
EndIf
If Not StringRegExp($sNew_URL, $sFileName_Pattern) Then
$sNew_URL = StringRegExpReplace($sRecv, $sJS2_Pattern, '\1')
EndIf
If Not StringRegExp($sNew_URL, $sFileName_Pattern) Then
$sNew_URL = StringRegExpReplace($sRecv, $sPHP_Pattern, '\1')
EndIf
If Not StringRegExp($sNew_URL, $sHost_Pattern) Then
$sNew_URL = 'http://' & $sHost & '/' & StringRegExpReplace($sNew_URL, '^/+', '')
EndIf
EndIf
If StringInStr(FileGetAttrib($sFile), 'D') Then
$sFile &= '\' & StringRegExpReplace($sNew_URL, '^.*/', '')
EndIf
Return InetGet($sNew_URL, $sFile, $iOptions, $iBackground)
EndFunc