Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата AlexM:
Это какие символы искать? »
Вот как то так:

Код: Выделить весь код
$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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:35, 28-01-2011 | #4