none
Загрузка файла из интернета с помощью PowerShell RRS feed

  • Вопрос

  • Есть задача автоматизировать загрузку файлов с сайта в интернет.

    выполняю загрузку так (момент с авторизацией опустил, выше по коду авторизовался на сайте и получил куки)

    $webRequest=Invoke-WebRequest $downloadURL -WebSession $session -UserAgent $uaString -outfile 'G:\Temp\rzd.xls' -PassThru

    на выходе получаю файл HTML файл в место файла эксель rzd_15_02_2017.xls

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>

    </title></head>
    <body>
        <form method="post" action="./Downloading.aspx?file=rzd_15_02_2017.xls&amp;id=4015&amp;act=supply" id="form1">
    <div class="aspNetHidden">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZIdx9h9q0R7sf+Wh2U+Pq3lzdY2/" />
    </div>

    <div class="aspNetHidden">

    <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="C5474D3D" />
    </div>
        <div>
        
        </div>
        </form>
    </body>
    </html>

    браузер по ссылке http:\\host\Downloading.aspx?file=rzd_15_02_2017.xls&amp;id=4015&amp;act=supply выдает файл. 

    как в скрипте получить файл?

    20 февраля 2017 г. 6:21

Ответы

  • Так работает(значения для ASP брать из  $session.Cookies.GetCookies("http://host"):
    $wc = New-Object System.Net.WebClient
    $wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko")
     $wc.Headers.Add("Cookie", "ASP.NET_SessionId=jl4qdx24fsnpma4dm04bgssc;.ASPXAUTH=E3B3482FA13DD849937DA5CD6E819C8DAE2605A6E6579EA218326E49F4062A3D33F9C3724524DD027C2752BD61456C28468EF1FF5AACB053350149584FD0B4FF8773A0510EB80F7FD4DEFF27E8AE58A6722640BB02FEE43E4C38A72EBB9B7EECC63B49918359167FE32044C8460B3C7E926C45BDCC25C448D665FD7B92A1A4D628ACAEEB")
    $wc.DownloadFile("http://host/Downloading.aspx?file=rzd_19_02_2017.xls&id=4026&act=supply","rzd_19_02_2017.xls")

    21 февраля 2017 г. 18:48
    Отвечающий
  • #все решил добавлением вот такой конструкции
    
    
    $downloadURL=$downloadURL1 -replace "amp;"
    
    как обычно дьявол кроется в мелочах :)
    22 февраля 2017 г. 14:27

Все ответы

  • Что возвращает?

    $webRequest=Invoke-WebRequest $downloadURL -WebSession $session -UserAgent $uaString
    
    $webRequest.Forms | fl
    
    $form = $webRequest.Forms[0]

    Посмотреть Fiddler  или в браузере, как выполняется метод Post. Далее передавать параметры:

    -Method POST -Body $form.Fields

    20 февраля 2017 г. 7:30
    Отвечающий
  • PS C:\Users\Documents> $webRequest.Forms | fl


    Id     : form1
    Method : post
    Action : ./Downloading.aspx
    Fields : {[__VIEWSTATE, /wEPDwULLTE2MTY2ODcyMjlkZIdx9h9q0R7sf+Wh2U+Pq3lzdY2/], [__VIEWSTATEGENERATOR, C5474D3D]}



    PS C:\Users\Documents> $webRequest.Forms | fl


    Id     : form1
    Method : post
    Action : ./Downloading.aspx?file=rzd_15_02_2017.xls&id=4015&act=supply
    Fields : {[__VIEWSTATE, /wEPDwULLTE2MTY2ODcyMjlkZIdx9h9q0R7sf+Wh2U+Pq3lzdY2/], [__VIEWSTATEGENERATOR, C5474D3D]}



    PS C:\Users\Documents> $form1 = $webRequest.Forms[0]
    PS C:\Users\Documents> Invoke-WebRequest -Method Post -Uri "http://host/Downloading.aspx?file=rzd_15_02_2017.xls&id=4015&act=supply" -Body $Forms1.Fields -outfile “c:\usr\rzd.xls” -WebSession $session

    все равно на выходе html точно такой же. 

    запрос через браузер

    GET /Downloading.aspx?file=rzd_18_02_2017.xls&id=4024&act=supply HTTP/1.1
    Host: host
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Referer: http://host/supplyfileexport.aspx
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
    Cookie: _ym_uid=1464697053148966233; ASP.NET_SessionId=50wycueq2s5ztsjmtt2134m1; _ym_isad=2; .ASPXAUTH=E5647B588FCD517444AB5A8D97E6FB936A1997B19CF9DE27CAA9A7AB332CA13D97A52F7C205749C9C7B99CA21E8FBEA998FE3FFDFA71F184843F2E0C097C40C129B24A424F9C3097D16F8BFB84CBA12EC48B6EA8F6063A2B056EAF1D6A351EC55CDF6E15B2D237DEC95EF6CC17CD0F07A5F4D4F2D17F490F5DCF4000787F8012E435F037; _ga=GA1.2.1690001780.1464697053; _gat=1

    запрос скриптом

    POST /Downloading.aspx?file=rzd_15_02_2017.xls&id=4015&act=supply HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows NT; Windows NT 6.2; ru-RU) Gecko/20100401 Firefox/4.0
    Content-Type: application/x-www-form-urlencoded
    Host: brokenstone.ru
    Cookie: ASP.NET_SessionId=wmkcp1udbtrxasbkbpjvrrnj
    Content-Length: 0
    Connection: Keep-Alive

    ответ через браузер

    HTTP/1.1 200 OK
    Date: Mon, 20 Feb 2017 10:43:41 GMT
    Content-Type: application/octet-stream
    Content-Length: 6604288
    Connection: keep-alive
    Keep-Alive: timeout=5
    Cache-Control: private
    Accept-Ranges: bytes
    Server: Microsoft-IIS/8.0
    X-AspNet-Version: 4.0.30319
    Content-Dis;filename=rzd_18_02_2017.xls
    X-Powered-By: ASP.NET

    ответ скриптом

    HTTP/1.1 200 OK
    Date: Mon, 20 Feb 2017 10:45:45 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 687
    Connection: keep-alive
    Keep-Alive: timeout=5
    Cache-Control: private
    Server: Microsoft-IIS/8.0
    X-AspNet-Version: 4.0.30319
    X-Powered-By: ASP.NET



    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>

    </title></head>
    <body>
        <form method="post" action="./Downloading.aspx?file=rzd_15_02_2017.xls&amp;id=4015&amp;act=supply" id="form1">
    <div class="aspNetHidden">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZIdx9h9q0R7sf+Wh2U+Pq3lzdY2/" />
    </div>

    <div class="aspNetHidden">

    <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="C5474D3D" />
    </div>
        <div>
        
        </div>
        </form>
    </body>
    </html>

    20 февраля 2017 г. 10:49
  • Что возвращает?

    Invoke-WebRequest -Method Get -Uri "http://host/Downloading.aspx?file=rzd_15_02_2017.xls&id=4015&act=supply" -outfile “c:\usr\rzd.xls” -WebSession $session

    20 февраля 2017 г. 11:24
    Отвечающий
  • Файл  внутри которого код страница 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>

    </title></head>
    <body>
        <form method="post" action="./Downloading.aspx?file=rzd_15_02_2017.xls&amp;id=4015&amp;act=supply" id="form1">
    <div class="aspNetHidden">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZIdx9h9q0R7sf+Wh2U+Pq3lzdY2/" />
    </div>

    <div class="aspNetHidden">

    <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="C5474D3D" />
    </div>
        <div>
        
        </div>
        </form>
    </body>
    </html>

    20 февраля 2017 г. 11:54
  • Покажите:

    $r = Invoke-WebRequest -Uri "http://host/Downloading.aspx?file=rzd_15_02_2017.xls&id=4015&act=supply" -UserAgent $uaString -WebSession $session
    $r.Headers

    и

     $session.Cookies.GetCookies("http://host")



    • Изменено KazunEditor 20 февраля 2017 г. 13:06
    20 февраля 2017 г. 12:53
    Отвечающий
  • PS C:\Users\Documents> $r.Headers
    
    Key              Value                        
    ---              -----                        
    Connection       keep-alive                   
    Keep-Alive       timeout=5                    
    Content-Length   687                          
    Cache-Control    private                      
    Content-Type     text/html; charset=utf-8     
    Date             Mon, 20 Feb 2017 14:21:36 GMT
    Server           Microsoft-IIS/8.0            
    X-AspNet-Version 4.0.30319                    
    X-Powered-By     ASP.NET                      

    PS C:\Users\Documents> $session.Cookies.GetCookies("http://host")
    
    
    Comment    : 
    CommentUri : 
    HttpOnly   : True
    Discard    : False
    Domain     : host
    Expired    : False
    Expires    : 01.01.0001 0:00:00
    Name       : ASP.NET_SessionId
    Path       : /
    Port       : 
    Secure     : False
    TimeStamp  : 20.02.2017 19:21:36
    Value      : k5vphx0oajxncdpizdob1vvj
    Version    : 0
    

    20 февраля 2017 г. 14:24
  • $session.Cookies.GetCookies("http://host")[".ASPXAUTH"] - в cookie должно содержаться ASPXAUTH, точно авторизация выполнена?
    20 февраля 2017 г. 14:31
    Отвечающий
  • $uaString = [Microsoft.PowerShell.Commands.PSUserAgent]::FireFox $b = Invoke-WebRequest 'http://host/account/login.aspx?returnurl=%2fsupplyfileexport.aspx' -SessionVariable session -UserAgent $uaString $downloadURL = 'http://host/Downloading.aspx?file=rzd_15_02_2017.xls&id=4015&act=supply' $loginform = $b.Forms[0] #Присвоим нужные значения всем полям: $loginForm.Fields.ctl00_ctl00_ContentPanel_MainContent_LoginUserControl_LoginTextBox = '******' $loginForm.Fields.ctl00_ctl00_ContentPanel_MainContent_LoginUserControl_PasswordTextBox = '*****' $loginForm.Fields.__EVENTTARGET = 'ctl00$ctl00$ContentPanel$MainContent$LoginUserControl$LoginButton' $Log = Invoke-WebRequest -method POST -URI 'http://host/account/login.aspx?returnurl=%2fsupplyfileexport.aspx' -Body $loginForm.Fields -WebSession $session -UserAgent $uaString

    авторизацию выполняю таким кодом.



    20 февраля 2017 г. 14:41
  • я обратил внимание на это. нашел даже статью но манипуляции с заголовки ничего не дали

    https://social.technet.microsoft.com/Forums/scriptcenter/en-US/9f214ed6-66fc-43d1-b775-d841bddcbcfa/cannot-get-authentication-cookie-from-web-server-with-invokewebrequest?forum=ITCG

    решило что пошел не по тому пути. и что авторизация проходит раз не получаю access deny.

    20 февраля 2017 г. 14:47
  • PS C:\Users\Documents> $loginForm.Fields
    
    Key                                                                   Value                                            
    ---                                                                   -----                                            
    __EVENTTARGET                                                         ctl00$ctl00$ContentPanel$MainContent$LoginUser...
    __EVENTARGUMENT                                                                                                        
    __VIEWSTATE                                                           /wEPDwUKLTQzMzQzMTk3Ng9kFgJmD2QWAmYPZBYEAgEPZB...
    __VIEWSTATEGENERATOR                                                  CD85D8D2                                         
    __EVENTVALIDATION                                                     /wEdAGzLIO4T56yDFsrPqupjx6StMHdCM/kCuAXL1MygfK...
    ctl00_ctl00_ContentPanel_MainContent_LoginUserControl_LoginTextBox    *****                                       
    ctl00_ctl00_ContentPanel_MainContent_LoginUserControl_PasswordTextBox *****                                           
    ctl00_ctl00_ContentPanel_MainContent_LoginUserControl_RememberMe      on                                               
    ctl00_ctl00_ModalSend1_SubjectTextBox                                                                                  
    ctl00_ctl00_ModalSend1_FIOTextBox                                                                                      
    ctl00_ctl00_ModalSend1_EmailTextBox                                                                                    
    ctl00_ctl00_ModalSend1_PhoneTextBox                                                                                    
    ctl00$ctl00$ModalSend1$CaptchaControl1                                                                                 
    ctl00_ctl00_ModalSend1_ButtonFilter                                                                                    
    ctl00_ctl00_ModalReg1_LoginTextBox                                                                                     
    ctl00_ctl00_ModalReg1_EmailTextBox                                                                                     
    ctl00_ctl00_ModalReg1_ButtonFilter                                                                                     
    ctl00_ctl00_ModalLogin1_LoginTextBox                                                                                   
    ctl00_ctl00_ModalLogin1_PasswordTextBox                                                                                
    ctl00_ctl00_ModalLogin1_RememberCheckBox                              on                                               
    ctl00_ctl00_ModalLogin1_ButtonFilter                                                                                   
    ctl00_ctl00_ModalForgot1_LoginTextBox                                                                                  
    ctl00_ctl00_ModalForgot1_EmailTextBox                                                                                  
    ctl00_ctl00_ModalForgot1_ButtonFilter                 

    PS C:\Users\Documents> $loginForm | fl
    
    
    Id     : aspnetForm
    Method : post
    Action : ./login.aspx?returnurl=%2fsupplyfileexport.aspx
    Fields : {[__EVENTTARGET, ctl00$ctl00$ContentPanel$MainContent$LoginUserControl$LoginButton], [__EVENTARGUMENT, ], [__V
             IEWSTATE, /wEPDwUKLTQzMzQzMTk3Ng9kFgJmD2QWAmYPZBYEAgEPZBYCAg4PFRAPLi4vanMvanF1ZXJ5LmpzDy4uL2pzL3NsaWRlci5qcx0u
             Li9qcy9qcXVlcnkuc2VsZWN0Ym94Lm1pbi5qcxouLi9qcy9qcXVlcnkubWFwaGlsaWdodC5qcx4uLi9qcy9qcXVlcnkubWFwaGlsaWdodC5taW
             4uanMYLi4vanMvanF1ZXJ5LnF0aXAubWluLmpzEC4uL2pzL3JhcGhhZWwuanMOLi4vanMvcGF0aHMuanMNLi4vanMvaW5pdC5qcx4uLi9qcy9q
             cXVlcnkubmljZXNjcm9sbC5taW4uanMNLi4vanMvbWFpbi5qcw0uLi9qcy9tZW51LmpzEC4uL2pzL3NjcmlwdHMuanMfLi4vanMvanMtcGFnZX
             MtZm9ybXMvdG9vbHRpcC5qcyUuLi9qcy9qcy1wYWdlcy1mb3Jtcy9jdXNlbC1taW4tMi41LmpzFi4uL2FuaW1fMTUwXzIwMF9taW4uanNkAgUP
             ZBYGAgMPFgIeB1Zpc2libGVoZAIHDxYCHwBoZAIKDxYCHgdFbmFibGVkaGQYAgUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgIFQG
             N0bDAwJGN0bDAwJENvbnRlbnRQYW5lbCRNYWluQ29udGVudCRMb2dpblVzZXJDb250cm9sJFJlbWVtYmVyTWUFKGN0bDAwJGN0bDAwJE1vZGFs
             TG9naW4xJFJlbWVtYmVyQ2hlY2tCb3gFJmN0bDAwJGN0bDAwJE1vZGFsU2VuZDEkQ2FwdGNoYUNvbnRyb2wxDwUkOGVjYzYwZTUtNzRmYS00MD
             UyLThhZGMtYmQwYzUyNTRiNzZmZBB19l0anRZ5mZOaREbr1FmOfgPC], [__VIEWSTATEGENERATOR, CD85D8D2]...}
    
    
    
    

    20 февраля 2017 г. 14:50
  • PS C:\Users\Documents> $session.Cookies.GetCookies("http://host")
    
    
    Comment    : 
    CommentUri : 
    HttpOnly   : True
    Discard    : False
    Domain     : host
    Expired    : False
    Expires    : 01.01.0001 0:00:00
    Name       : ASP.NET_SessionId
    Path       : /
    Port       : 
    Secure     : False
    TimeStamp  : 20.02.2017 21:20:55
    Value      : it4k1exo3ev0n5qzmywa20nu
    Version    : 0
    
    Comment    : 
    CommentUri : 
    HttpOnly   : True
    Discard    : False
    Domain     : host
    Expired    : False
    Expires    : 01.01.0001 0:00:00
    Name       : .ASPXAUTH
    Path       : /
    Port       : 
    Secure     : False
    TimeStamp  : 20.02.2017 21:20:55
    Value      : 63B446A4B1FBD984B6B71FF1E20027896736408FD0252212D11E3F3B2625670D664327A5800BB3FB00AEBC59B4E2C6D00DE93EDEE5
                 E46BE4F81CBCD1C53A4395EA0E2FA1D7D926EBFAC1BC035AC72D54EE146E93031ED520A6F63A080D1F75332880BEAAF5E38B031AE6
                 896A53F4FD57EA57B0F2D313C8B2153A868004CB622BAD8FFE6D
    Version    : 0
    На результат это не повлияло :(
    20 февраля 2017 г. 16:25
  • Из браузера,данных больше:

    Cookie: _ym_uid=1464697053148966233; ASP.NET_SessionId=50wycueq2s5ztsjmtt2134m1; _ym_isad=2;

    .ASPXAUTH=E5647B588FCD517444AB5A8D97E6FB936A1997B19CF9DE27CAA9A7AB332CA13D97A52F7C205749C9C7B99CA21E8FBEA998FE3FFDFA71F184843F2E0C097C40C129B24A424F9C3097D16F8BFB84CBA12EC48B6EA8F6063A2B056EAF1D6A351EC55CDF6E15B2D237DEC95EF6CC17CD0F07A5F4D4F2D17F490F5DCF4000787F8012E435F037; _ga=GA1.2.1690001780.1464697053; _gat=1

    Запишите сессию в chrome и приложите данные curl, по каждому запросу.

    20 февраля 2017 г. 16:50
    Отвечающий
  • остальное это куки яндекса и гугл.  врядли они могут влиять на загрузку файла.

    http://www.remoteshaman.com/forum/internet-services/106-otkuda-berutsya-cookie-ym-uid-i-ym-isad-dlya-cookieless-domena

    http://stackoverflow.com/questions/38396277/why-does-google-analytics-client-id-cookie-contain-a-ga1-2-prefix

    20 февраля 2017 г. 17:07
  • Из браузера,данных больше:

    Cookie: _ym_uid=1464697053148966233; ASP.NET_SessionId=50wycueq2s5ztsjmtt2134m1; _ym_isad=2;

    .ASPXAUTH=E5647B588FCD517444AB5A8D97E6FB936A1997B19CF9DE27CAA9A7AB332CA13D97A52F7C205749C9C7B99CA21E8FBEA998FE3FFDFA71F184843F2E0C097C40C129B24A424F9C3097D16F8BFB84CBA12EC48B6EA8F6063A2B056EAF1D6A351EC55CDF6E15B2D237DEC95EF6CC17CD0F07A5F4D4F2D17F490F5DCF4000787F8012E435F037; _ga=GA1.2.1690001780.1464697053; _gat=1

    Запишите сессию в chrome и приложите данные curl, по каждому запросу.

    это я не очень понял как сделать. авторизация проходи 100% проверял по содержимому страницы с ссылками. без авторизации ссылки на фалы не выдаются. попробовал скачать файл curl и wget с импортом куков из файла результат один и тот же.  :(
    20 февраля 2017 г. 18:54
  • import requests
    from bs4 import BeautifulSoup
    
    session = requests.Session()
    
    payload = {
        r'TopControl1$ScriptManager1': r'HistoriqueNegociation1$UpdatePanel1|HistoriqueNegociation1$HistValeur1$LinkButton1',
        r'__EVENTTARGET': r'HistoriqueNegociation1$HistValeur1$LinkButton1',
        r'__EVENTARGUMENT': r'',
        r'TopControl1$TxtRecherche': r'',
        r'TopControl1$txtValeur': r'',
        r'HistoriqueNegociation1$HistValeur1$DDValeur': r'9000  ',
        r'HistoriqueNegociation1$HistValeur1$historique': r'RBSearchDate',
        r'HistoriqueNegociation1$HistValeur1$DateTimeControl1$TBCalendar': r'22/12/2014',
        r'HistoriqueNegociation1$HistValeur1$DateTimeControl2$TBCalendar': r'28/12/2014',
        r'HistoriqueNegociation1$HistValeur1$DDuree': r'6',
        r'hiddenInputToUpdateATBuffer_CommonToolkitScripts': r'1'
      }
    
    
    uri = 'http://www.casablanca-bourse.com/bourseweb/en/Negociation-History.aspx?Cat=24&IdLink=225'
    r = session.get(uri)
    
    #Find __VIEWSTATE value, there is only one input tag with type="hidden"
    soup = BeautifulSoup(r.text)
    viewstate_tag = soup.find('input', attrs={"type" : "hidden"})
    payload[viewstate_tag['name']] = viewstate_tag['value']
    
    r = session.post(uri, payload)
    print r.text #contains html table with data
    нашел решение на питоне  буду проверять 
    21 февраля 2017 г. 4:07
  • $b2 = @{ file = "rzd_15_02_2017.xls"; id=4015; act='supply'; __VIEWSTATE='/wEPDwULLTE2MTY2ODcyMjlkZIdx9h9q0R7sf+Wh2U+Pq3lzdY2/'; __VIEWSTATEGENERATOR="C5474D3D"; } $webRequest1=Invoke-RestMethod -Uri $downloadURL -WebSession $session -Body $b2 -outfile 'c:\usr\rzd.xls' -Method post

    Пытаюсь выполнить вот такой запрос но результат тот же :(

    21 февраля 2017 г. 11:10
  • Запустить хром - нажать F12 - сделать авторицаию и скачать файл, далее на запросах выбрать Copy as cUrl(cmd) и приведите сюда.
    21 февраля 2017 г. 11:15
    Отвечающий
  • curl "http://host/Downloading.aspx?file=rzd_19_02_2017.xls^&id=4026^&act=supply" -H "Accept-Encoding: gzip, deflate, sdch" -H "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4" -H "Upgrade-Insecure-Requests: 1" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" -H "Referer: http://host/supplyfileexport.aspx" -H "Cookie: _ym_uid=1464697053148966233; ASP.NET_SessionId=50wycueq2s5ztsjmtt2134m1; _ym_isad=2; .ASPXAUTH=64CA5D90D3459524FDF53C1E603B4CA65FF26A16AC2ACF15B59FFD7D77D5D8BC8615EEA032AA128A628E21D20D2802950A9AC29CA4AB8228F44E938906FFA026C6583716E1CE8E1F46B9CAD86A07E1DE3754259B777A52BB14264CD6C287AAF3B4818704AA74DEC6A9200E30E5A7583A3F590A0D74FBE27D36F791176E4D6FDB3F8C79FA; _ga=GA1.2.1690001780.1464697053" -H "Proxy-Connection: keep-alive" --compressed &

    еще провел несколько опытов. :)

    вывод загрузка фала происходит только если кликнуть на ссылку при это ни каких JS на ссылку не навешано.

    если скопировать ссылку и вставить в адресную строку получишь пустую страницу так что и загружается в итоге, результат один с авторизацией и без.

    код страницы с ссылками. 

    <div id="ctl00_ctl00_ContentPanel_MainContent_TablePlace" class="filter"><table>
    	<tr class="first">
    		<td></td>
    		<td>Название файла</td>
    		<td>Тип файла</td>
    		<td>Дата файла</td>
    	</tr>
    	<tr>
    		<td><input id="ctl00_ctl00_ContentPanel_MainContent_btn4027" type="checkbox" name="ctl00$ctl00$ContentPanel$MainContent$btn4027" /></td>
    		<td><a href="Downloading.aspx?file=rzd_20_02_2017.xls&amp;id=4027&amp;act=supply">Поставки по жд за 20.02.2017</a></td>
    		<td>Ежедневный</td>
    		<td>20.02.2017</td>
    	</tr>
    	<tr>
    		<td><input id="ctl00_ctl00_ContentPanel_MainContent_btn4026" type="checkbox" name="ctl00$ctl00$ContentPanel$MainContent$btn4026" /></td>
    		<td><a href="Downloading.aspx?file=rzd_19_02_2017.xls&amp;id=4026&amp;act=supply">Поставки по жд за 19.02.2017</a></td>
    		<td>Ежедневный</td>
    		<td>19.02.2017</td>
    	</tr>
    	<tr>
    		<td><input id="ctl00_ctl00_ContentPanel_MainContent_btn4024" type="checkbox" name="ctl00$ctl00$ContentPanel$MainContent$btn4024" /></td>
    		<td><a href="Downloading.aspx?file=rzd_18_02_2017.xls&amp;id=4024&amp;act=supply">Поставки по жд за 18.02.2017</a></td>
    		<td>Ежедневный</td>
    

    21 февраля 2017 г. 12:11
  • $Uri = "http://host/Downloading.aspx?file=rzd_19_02_2017.xls&id=4026&act=supply" $UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" $wr = Invoke-WebRequest -Uri $Uri -WebSession $session -UserAgent $UserAgent -Method Get -Headers @{ "Accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" "Accept-Encoding" = "gzip, deflate, sdch" "Accept-Language" = "en-US,en;q=0.8" "Refer" = "http://host/supplyfileexport.aspx" "Upgrade-Insecure-Requests" = 1 }

    $wr.Headers

    Посмотреть, уходит ли в запросе .ASPXAUTH
    • Изменено KazunEditor 21 февраля 2017 г. 13:13
    21 февраля 2017 г. 13:11
    Отвечающий
  • Key              Value                        
    ---              -----                        
    Connection       keep-alive                   
    Keep-Alive       timeout=5                    
    Content-Encoding gzip                         
    Vary             Accept-Encoding              
    Content-Length   571                          
    Cache-Control    private                      
    Content-Type     text/html; charset=utf-8     
    Date             Tue, 21 Feb 2017 13:57:40 GMT
    Server           Microsoft-IIS/8.0            
    X-AspNet-Version 4.0.30319                    
    X-Powered-By     ASP.NET                

    $wr.Headers это разве будет не ответ?

    fiddler показывает что куки уходят. еще мысли в сторону __VIEWSTATE покапать.


         

    21 февраля 2017 г. 14:00
  • PS C:\Users\Documents> $session.cookies.GetCookieHeader("host")
    ASP.NET_SessionId=jl4qdx24fsnpma4dm04bgssc; .ASPXAUTH=E3B3482FA13DD849937DA5CD6E819C8DAE2605A6E6579EA218326E49F4062A3D33F9C3724524DD027C2752BD61456C28468EF1FF5AACB053350149584FD0B4FF8773A0510EB80F7FD4DEFF27E8AE58A6722640BB02FEE43E4C38A72EBB9B7EECC63B49918359167FE32044C8460B3C7E926C45BDCC25C448D665FD7B92A1A4D628ACAEEB
    21 февраля 2017 г. 14:05
  • А чем отличается запрос в fiddler из браузера и последний вариант с  Invoke-WebRequest?

    После получения .ASPAUTH , попробовать в ручную задать Cookie(заменив на требуемые значения, после post):

    $wr = Invoke-WebRequest -Uri $Uri -UserAgent $UserAgent -Method Get -Headers @{
    	"Accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
    	"Accept-Encoding" = "gzip, deflate, sdch"
    	"Accept-Language" = "en-US,en;q=0.8"
    	"Refer" = "http://host/supplyfileexport.aspx"
    	"Cookie" = "ASP.NET_SessionId=jl4qdx24fsnpma4dm04bgssc;.ASPXAUTH=E3B3482FA13DD849937DA5CD6E819C8DAE2605A6E6579EA218326E49F4062A3D33F9C3724524DD027C2752BD61456C28468EF1FF5AACB053350149584FD0B4FF8773A0510EB80F7FD4DEFF27E8AE58A6722640BB02FEE43E4C38A72EBB9B7EECC63B49918359167FE32044C8460B3C7E926C45BDCC25C448D665FD7B92A1A4D628ACAEEB"
    	"Upgrade-Insecure-Requests" = 1
    }


    • Изменено KazunEditor 21 февраля 2017 г. 14:37
    21 февраля 2017 г. 14:26
    Отвечающий
  • да один фиг. не получаеться

    GET http://host/Downloading.aspx?file=rzd_15_02_2017.xls&id=4015&act=supply HTTP/1.1
    Refer: http://host/supplyfileexport.aspx
    Accept-Encoding: gzip, deflate, sdch
    Upgrade-Insecure-Requests: 1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: en-US,en;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
    Host: host
    
    
    это скрипт
    
    GET /Downloading.aspx?file=rzd_20_02_2017.xls&id=4027&act=supply HTTP/1.1
    Host: host
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Referer: http://host/supplyfileexport.aspx
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
    Cookie: _ym_uid=1482165894280227692; ASP.NET_SessionId=rzhjpsg0ca2g2exawbblzxfp; _ym_isad=2; .ASPXAUTH=26A87BA21A4B2FE3CF5187944E53C8CA5D3675958EB9368456E61C7E927AEBA7121176932ACECC2F28E8C6414C682AC0A2FBFF64FD60F3D9877A7FD4E4D9FC5C2601F8853205A41AF237E2E31994DBE13CD8BD3D3279EEC14E99A92FEF771BA424D7DDCC9B747E122438BEF7471B61CAA3D26BEB36AF087A9EFE819BACE0F68B8FC1668D; _ga=GA1.2.1233987959.1482165894
    
    браузер
    


    21 февраля 2017 г. 18:10
  • А где у скрипта в headers Cookie?
    21 февраля 2017 г. 18:16
    Отвечающий
  • так куки совсем не передаються
    21 февраля 2017 г. 18:18
  • Вы же получали в session данные?

    PS C:\Users\Documents> $session.Cookies.GetCookies("http://host")

    1) Отсылаете Post с заполнением формы авторизации на сайте

    2) $session.Cookies.GetCookies("http://host")  - проверяем  ASP.NET_SessionId и .ASPXAUTH

    3) Смотрите результат в fiddler,должны отсылаться cookie:

    $Uri = "http://host/Downloading.aspx?file=rzd_19_02_2017.xls&id=4026&act=supply"
    $wr = Invoke-WebRequest -Uri $Uri -UserAgent $UserAgent -Method Get -Headers @{
    	"Accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
    	"Accept-Encoding" = "gzip, deflate, sdch"
    	"Accept-Language" = "en-US,en;q=0.8"
    	"Refer" = "http://host/supplyfileexport.aspx"
    	"Upgrade-Insecure-Requests" = 1
    }
    $wr.Headers

    21 февраля 2017 г. 18:39
    Отвечающий
  • Connection: keep-alive

    вот этого заголовка нет если делать запрос через скрипт но его не возможно задать.

    21 февраля 2017 г. 18:46
  • Так работает(значения для ASP брать из  $session.Cookies.GetCookies("http://host"):
    $wc = New-Object System.Net.WebClient
    $wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko")
     $wc.Headers.Add("Cookie", "ASP.NET_SessionId=jl4qdx24fsnpma4dm04bgssc;.ASPXAUTH=E3B3482FA13DD849937DA5CD6E819C8DAE2605A6E6579EA218326E49F4062A3D33F9C3724524DD027C2752BD61456C28468EF1FF5AACB053350149584FD0B4FF8773A0510EB80F7FD4DEFF27E8AE58A6722640BB02FEE43E4C38A72EBB9B7EECC63B49918359167FE32044C8460B3C7E926C45BDCC25C448D665FD7B92A1A4D628ACAEEB")
    $wc.DownloadFile("http://host/Downloading.aspx?file=rzd_19_02_2017.xls&id=4026&act=supply","rzd_19_02_2017.xls")

    21 февраля 2017 г. 18:48
    Отвечающий
  • да  все получилось :)

    рабочий код загрузки в итоге вот такой

    $aspnet=($session.Cookies.GetCookies('host')[0]).Value
    	$ASPXAUTH=($session.Cookies.GetCookies('host')[1]).Value
    
    
    $wc = New-Object System.Net.WebClient
    $wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko")
     $wc.Headers.Add("Cookie", "ASP.NET_SessionId="+$aspnet+";.ASPXAUTH="+$ASPXAUTH)
    $wc.DownloadFile($downloadURL, $downloadFiles)


    спасибо огромное


    22 февраля 2017 г. 3:52
  • пока писал обработку ссылок перестало работать :(. что то со стороны сервера  с куками происходит. может слишком много их скрипт создает. проверю завтра утром.

    еще советуют fantomjs браузер без gui.

    22 февраля 2017 г. 10:24
  • проблема вообще не в куках и не в заголовках. что то не так с кодировкой строки. 

    копирую ссылку из браузера вставляю в скрипт все работает.

    если достаю ссылку из переменной не работает.


    22 февраля 2017 г. 13:17
  • $webRequest1=Invoke-WebRequest "http://host/Downloading.aspx?file=rzd_21_02_2017.xls&id=4029&act=supply" -WebSession $session -outfile 'c:\usr\rzd1.xls' -PassThru

    тоже работает :)

    ну я так и думал что не туда копал. надо разбросаться как получить рабочею ссылку из переменной.

    сейчас делаю так.

    function getURL ($links){ return $links | Where-Object {$_.href -like "*Downloading.aspx?file*"} #| ft innerText, href }

    потом так в цикле получаю ссылку $downloadURL="http://host/" + $download.href


    22 февраля 2017 г. 13:25
  • #все решил добавлением вот такой конструкции
    
    
    $downloadURL=$downloadURL1 -replace "amp;"
    
    как обычно дьявол кроется в мелочах :)
    22 февраля 2017 г. 14:27