126

Re: AHK: Скачивание через GET/POST-запросы

Потому что сервер может ругаться если не отправить ему User-Agent.
Если хотите подделать под фаерфокс, посмотрите какой User-Agent отправляет фаерфокс, а можете вообще свой придумать.

+ DD

127 (изменено: DD, 2019-04-13 22:04:32)

Re: AHK: Скачивание через GET/POST-запросы

Привет. Программа логинится и скачивает Заметку с Фейсбука в мобильной версии, совершая переходы на предыдущие страницы комментариев. Но почему-то в скрипте переход происходит на ту же самую страницу, хотя в браузере они подгружаются к уже открытой в нем странице. Можно ли скриптом сымитировать поведение в браузере?

SetBatchLines -1
#SingleInstance Force

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
;-------------------------------------------------------
login    := "***********"
password := "***********"
;-------------------------------------------------------
email    := login
dest_path := A_ScriptDir
post_link := "https://mobile.facebook.com/notes/125979897479306/"

If not (LoginMode == 1)
{  ; при первом запуске один раз:
   GoSub, login
   LoginMode = 1
}

loop
{
   sleep 1000
   If A_Index = 1
      URL := post_link
   Else
      URL := URL

   HTTP.Open("GET", URL, true)
;  HTTP.SetRequestHeader("Cookie", "remixlang=0")   ; имена на русском
   HTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
   HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36")
   HTTP.SetRequestHeader("Pragma", "no-cache")
   HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
   HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
   HTTP.Send()
   HTTP.WaitForResponse()
   ResponseText := HTTP.ResponseText

   match := "", Pos := 1
   While Pos := RegExMatch(ResponseText, "s)(<div class=""[^""]*"" data-store=""[^""]*"" id=""\d+"".*?Ещё</a></div></div></div>)",match,Pos+StrLen(match))
      all .= match1 "`n"

   URL := ""
   match := ""
   If RegExMatch(ResponseText, "s)<a[^>]* href=""([^""]*)""[^>]*>(<[^>]*>)+&nbsp;Просмотр предыдущих комментариев", match)
   {
      StringReplace match1, match1, &amp`;, &, All
      URL := match1
      URL = https://mobile.facebook.com%URL%
      msgbox % URL
   }

   if (URL = "")
      break
   If (URL~="^https://mobile.facebook.com$")
      break
}

all := all
fileappend, %all%, %dest_path% ;, UTF-8
all := ""
Return

login:
SplashImage,, y-2 x60 w40 h14 M C11 ZH0 ZW0 ZX1 ZY1 B1 
       . CTffffff CW3B5998 FM8 FS6 WM600 WS400,, login
;--------------------------------------------
;Авторизация:
;--------------------------------------------
HTTP.Open("POST", "https://mobile.facebook.com/login.php", true)
;HTTP.Open("POST", "https://mobile.facebook.com/login.php?refsrc=https%3A%2F%2Fmobile.facebook.com%2Flogin%2F&lwv=101&ref=dbl", true)
HTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.Send("email=" email "&pass=" password "&login=" login)
HTTP.WaitForResponse()
ResponseText := HTTP.ResponseText
ResponseText =
;--------------------------------------------
SplashImage, OFF
Return