使用urlFetchApp登录后如何获取源代码?

问题描述 投票:0回答:2

我被困住了。我可以登录该网站,现在登录后,我想获取url2的源代码。有什么想法可以继续吗?

function login() {

 var url = "https://www.erevollution.com/en/login"; 
  var payload = {
    "email":"[email protected]", 
    "password":"testpassword",
    "remember":"on"
  }; 

  var options = {
    "payload":payload,
    "method":"post",
    "followRedirects" : false
  };

  var response = UrlFetchApp.fetch(url, options);
  if ( response.getResponseCode() == 200 ) {                                             //could not log in.
    var result = "Couldn't login. Username/password is incorrect.";
  } 
  else if ( response.getResponseCode() == 302 ) {                                        //login was successful
     var result = "Logged in successfully";

     var cookie = response.getAllHeaders()['Set-Cookie'];     
     var header = { "Cookie":cookie[0] };
     var options2 = { "headers": header };
     var url2 = "https://www.erevollution.com/tr/market/1/1/1/1";
     var response2 = UrlFetchApp.fetch(url2, options2);   
  }
 Logger.log(result);
 Logger.log(response2);

}
google-apps-script urlfetch urlfetchapp
2个回答
1
投票

问题:

您应该在要作为调用参数传递的对象的属性headers中包含cookie,如您所见in the docs

代码示例:

var header = { "Cookie": cookie[1] };
var options = { "headers": header };
var url = "https://www.erevollution.com/tr/market/1/1/1/1";
var response = UrlFetchApp.fetch(url, options);

参考:


0
投票

我通过获取响应头cookie并将它们排序为下一页(url2)的请求头cookie来解决了这个问题。所以我得到了下一页Cookie的正确顺序(newcookie)。

Response HeadersRequest Header

function Price() {
 var url = "https://www.erevollution.com/en/login"; 
  var payload = {
    "email":"[email protected]", 
    "password":"testpassword",
    "remember":"on"
  }; 

  var options = {
    "payload":payload,
    "method":"post",
    "followRedirects" : false
  };

  var response = UrlFetchApp.fetch(url, options);
  if ( response.getResponseCode() == 200 ) {               //could not log in.
    var result = "Couldn't login. Username/password is incorrect.";
  } 
  else if ( response.getResponseCode() == 302 ) {         //login was successful
       var result = "Logged in successfully";
      var cookie = response.getAllHeaders()['Set-Cookie'];     

         for(m=0;m<5;m++){
          cookie[m]=cookie[m].substring(0,cookie[m].indexOf(";"));
         }
       var newcookie=cookie[4]+"; "+cookie[1]+"; "+cookie[2]+";"+cookie[3]+"; "+cookie[0];

       var header = { "Cookie":newcookie };
       var options2 = { "headers": header };


        var url2 = "https://www.erevollution.com/tr/market/1/1/1/1";
        var response2 = UrlFetchApp.fetch(url2, options2);
        var content = response2.getContentText();
© www.soinside.com 2019 - 2024. All rights reserved.