manman89

GOOGLE APPS SCRIPT - vmkCURL v1.0 by ManMan89

Feb 11th, 2013
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // vmkCURL v1.0 by ManMan89 FOR GOOGLE APPS SCRIPT
  2.  
  3. http://blogger.hide.vn
  4.  
  5. function vmkCurl(Link, Meod, Headers, DLieuSend, CookieFile, Source){
  6.   if(typeof(Link) != "string"){return "REQUIRE LINK IS STRING DATA TYPE";}
  7.   if(typeof(Meod) != "string"){return "REQUIRE METHOD IS STRING DATA TYPE";}
  8.   if(Headers == null || typeof(Headers) != "object"){return "REQUIRE HEADERS IS ARRAY DATA TYPE";}  
  9.   if(DLieuSend == null || typeof(DLieuSend) != "object"){return "REQUIRE DATA IS ARRAY DATA TYPE";}
  10.   if(typeof(CookieFile) != "string"){return "REQUIRE COOKIE FILE IS STRING DATA TYPE";}
  11.   if(typeof(Source) != "string"){return "REQUIRE SOURCE IS STRING DATA TYPE";}
  12.  
  13.   var supp_meod = ["GET","POST","PUT","DELETE"];
  14.   var supp_pro = ["HTTP","HTTPS"];
  15.  
  16.   Link = Trim(Link.toString());
  17.   Meod = Trim(Meod.toString());
  18.   Source = Trim(Source.toString());
  19.  
  20.   var Cookies = ScriptProperties.getProperty(CookieFile);
  21.   if(Cookies == null){
  22.     Cookies = "";
  23.   }else{
  24.     Cookies = Trim(Cookies.toString());
  25.   }
  26.  
  27.   if(Link == "" || Meod == ""){return "LINK OR METHOD IS MISSING";}
  28.  
  29.   Meod = Meod.toUpperCase();
  30.   if(supp_meod.indexOf(Meod) == -1){return "METHOD NOT SUPPORT";}
  31.  
  32.   var check_pro = Link.toString().split("://");
  33.   if(supp_pro.indexOf(check_pro[0].toUpperCase()) == -1){return "PROTOCOL NOT SUPPORT";}
  34.  
  35.   var idem = 0;
  36.   var vmkCauHinh = {};
  37.   var vmkHeaders = Headers;
  38.   var vmkPayLoad = "";
  39.  
  40.   // GOOGLE NOT ALLOW CHANGE USER-AGENT
  41.  
  42.   if(Cookies != ""){vmkHeaders["Cookie"] = Cookies;}
  43.   if(Source != ""){vmkHeaders["Referer"] = Source;}
  44.  
  45.   vmkCauHinh["headers"] = vmkHeaders;
  46.   vmkCauHinh["method"] = Meod.toLowerCase();
  47.  
  48.   for(var index in DLieuSend){idem += 1;}
  49.  
  50.   if(Meod == "GET"){
  51.     if(idem != 0){
  52.       for(var i in DLieuSend){vmkPayLoad = vmkPayLoad + i + "=" + UrlEncode3986(DLieuSend[i],"GET") + "&";}
  53.       if(Link.indexOf("?") != -1){Link = Link.substring(0,Link.indexOf("?"));}
  54.       Link = Link + "?" + vmkPayLoad.replace(/\&$/,"");      
  55.     }
  56.   }
  57.  
  58.   if(Meod == "POST"){    
  59.     if(idem != 0){
  60.       for(var i in DLieuSend){vmkPayLoad = vmkPayLoad + i + "=" + UrlEncode3986(DLieuSend[i],"POST") + "&";}
  61.       vmkCauHinh["payload"] = vmkPayLoad.replace(/\&$/,"");
  62.     }
  63.     for(var i in vmkCauHinh["headers"]){
  64.       if(i.toLowerCase() == "content-type"){
  65.         vmkCauHinh["contentType"] = vmkCauHinh["headers"][i];
  66.       }
  67.     }
  68.   }
  69.  
  70.   try{
  71.     var response = UrlFetchApp.fetch(Link,vmkCauHinh);    
  72.     Cookies = response.getAllHeaders()['Set-Cookie'];
  73.     if(Cookies != undefined){
  74.       if(Cookies != ""){ScriptProperties.setProperty(CookieFile, Cookies.toString());}
  75.     }
  76.     return {"headerz": response.getAllHeaders(),"bodyz": response.getContentText()};
  77.   }catch(e){
  78.     return e;
  79.   }
  80. }
  81.  
  82. function vmkCurlTESTER(){
  83.   Logger.clear();
  84.  
  85.   // EXAMPLE GET
  86.  
  87.   var link = "https://www.neobux.com/m/l/?a=1&b=2&c=3";
  88.   var source = "http://www.google.com";
  89.   var CookieFile = "vmkCookies.ini";
  90.   var DLieuSend = {
  91.     "login": "yes",
  92.     "username": "admin",
  93.     "password": "123 456 789"
  94.   };
  95.   var headers = {
  96.     "X-Sign": "ManMan89",
  97.     "Accept-Language": "en-us,en;q=0.5",
  98.     "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
  99.     "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*'.'/*;q=0.8"
  100.   };
  101.   var vmkopen = vmkCurl(link, "GET", headers, DLieuSend, CookieFile, source);
  102.   Logger.log(vmkopen);
  103.  
  104.   // EXAMPLE POST
  105.  
  106.   var link = "https://www.neobux.com/m/l/?a=1&b=2&c=3";
  107.   var source = "http://www.google.com";
  108.   var CookieFile = "vmkCookies.ini";
  109.   var DLieuSend = {
  110.     "login": "yes",
  111.     "username": "admin",
  112.     "password": "123 456 789"
  113.   };
  114.   var headers = {
  115.     "X-Sign": "ManMan89",
  116.     "Accept-Language": "en-us,en;q=0.5",
  117.     "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
  118.     "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
  119.     "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*'.'/*;q=0.8"
  120.   };
  121.   var vmkopen = vmkCurl(link, "POST", headers, DLieuSend, CookieFile, source);
  122.   Logger.log(vmkopen);
  123. }
  124.  
  125. function UrlEncode3986(DLieu,Meod){
  126.   var kq = "";
  127.   var supp_meod = ["GET","POST"];
  128.  
  129.   if(typeof(DLieu) != "string"){return "REQUIRE DATA IS STRING DATA TYPE";}
  130.   if(typeof(Meod) != "string"){return "REQUIRE METHOD IS STRING DATA TYPE";}  
  131.  
  132.   DLieu = Trim(DLieu.toString());
  133.   Meod = Trim(Meod.toString());
  134.  
  135.   if(DLieu == "" || Meod == ""){return "DATA OR METHOD IS MISSING";}
  136.  
  137.   Meod = Meod.toUpperCase();
  138.   if(supp_meod.indexOf(Meod) == -1){return "METHOD NOT SUPPORT";}
  139.  
  140.   var vmkreplace = {
  141.     "!": "%21",
  142.     "*": "%2A",
  143.     "'": "%27",
  144.     "(": "%28",
  145.     ")": "%29"
  146.   };
  147.   kq = encodeURIComponent(DLieu);
  148.   for(var val in vmkreplace){kq = kq.split(val).join(vmkreplace[val]);}
  149.   if(Meod == "POST"){kq = kq.replace(/%20/g,'+');}
  150.  
  151.   return kq;
  152. }
  153.  
  154. function Trim(string){
  155.   if(typeof(string) === "undefined"){return ""}
  156.   return string.toString().replace(/^\s\s*/,'').replace(/\s\s*$/,'');
  157. }
Add Comment
Please, Sign In to add comment