2017-09-23 17 views
0

私はちょっと心配しています。急いで、これが正しいかどうかは分かりませんが、どこから聞くべきか分かりません。 私は、スパムから自分のGmailアカウントをクリアして、これを行う方法を探しているときに次のリンクを見つけました: https://www.labnol.org/internet/gmail-unsubscribe/28806/ 完全にばかばかしいように、何も疑うことなく盲目的に指示に従いました。手順を完了した後、実際に何も起こらなかったので(スプレッドシートが埋め込まれていなかったため)、スクリプトを停止してGoogleアカウントの権限から削除し、使用されたコードの検査を開始しました。Google Script gmailの詐欺ですか?

function getConfig() { 
    var params = { 
    label:doProperty_("LABEL") || "Unsubscribe" 
    }; 
    return params; 
} 

function config_() { 
    var html = HtmlService.createHtmlOutputFromFile('config') 
    .setTitle("Gmail Unsubscriber") 
    .setWidth(300).setHeight(200).setSandboxMode(HtmlService.SandboxMode.IFRAME); 
    var ss = SpreadsheetApp.getActive(); 
    ss.show(html); 
} 

function help_() { 
    var html = HtmlService.createHtmlOutputFromFile('help') 
    .setTitle("Google Scripts Support") 
    .setWidth(350).setHeight(120); 
    var ss = SpreadsheetApp.getActive(); 
    ss.show(html); 
} 

function createLabel_(name) { 

    var label = GmailApp.getUserLabelByName(name); 

    if (!label) { 
    label = GmailApp.createLabel(name); 
    } 

    return label; 

} 

function log_(status, subject, view, from, link) { 
    var ss = SpreadsheetApp.getActive(); 
    ss.getActiveSheet().appendRow([status, subject, view, from, link]); 
} 

function init_() { 
    Browser.msgBox("The Unsubscriber was initialized. Please select the Start option from the Gmail menu to activate."); 
    return; 
} 


function onOpen() { 

    var menu = [  
    {name: "Configure", functionName: "config_"}, 
    null, 
    {name: "☎ Help & Support",functionName: "help_"}, 
    {name: "✖ Stop (Uninstall)", functionName: "stop_"}, 
    null 
    ]; 

    SpreadsheetApp.getActiveSpreadsheet().addMenu("➪ Gmail Unsubscriber", menu); 

} 

function stop_(e) { 

    var triggers = ScriptApp.getProjectTriggers(); 

    for(var i in triggers) { 
    ScriptApp.deleteTrigger(triggers[i]); 
    } 

    if (!e) { 
    Browser.msgBox("The Gmail Unsubscriber has been disabled. You can restart it anytime later."); 
    } 
} 


function doProperty_(key, value) { 

    var properties = PropertiesService.getUserProperties(); 

    if (value) { 
    properties.setProperty(key, value); 
    } else { 
    return properties.getProperty(key); 
    } 

} 

function doGmail() { 

    try { 

    var label = doProperty_("LABEL") || "Unsubscribe"; 

    var threads = GmailApp.search("label:" + label); 

    var gmail = createLabel_(label); 

    var url, urls, message, raw, body, formula, status; 

    var hyperlink = '=HYPERLINK("#LINK#", "View")'; 

    var hrefs = new RegExp(/<a[^>]*href=["'](https?:\/\/[^"']+)["'][^>]*>(.*?)<\/a>/gi); 

    for (var t in threads) { 

     url = ""; 

     status = "Could not unsubscribe"; 

     message = threads[t].getMessages()[0]; 

     threads[t].removeLabel(gmail); 

     raw = message.getRawContent(); 

     urls = raw.match(/^list\-unsubscribe:(.|\r\n\s)+<(https?:\/\/[^>]+)>/im); 

     if (urls) { 
     url = urls[2]; 
     status = "Unsubscribed via header"; 
     } else { 
     body = message.getBody().replace(/\s/g, ""); 
     while ((url === "") && (urls = hrefs.exec(body))) { 
      if (urls[1].match(/unsubscribe|optout|opt\-out|remove/i) || urls[2].match(/unsubscribe|optout|opt\-out|remove/i)) { 
      url = urls[1]; 
      status = "Unsubscribed via link"; 
      } 
     } 
     } 

     if (url === "") { 
     urls = raw.match(/^list\-unsubscribe:(.|\r\n\s)+<mailto:([^>]+)>/im); 
     if (urls) { 
      url = parseEmail_(urls[2]); 
      var subject = "Unsubscribe"; 
      GmailApp.sendEmail(url, subject, subject); 
      status = "Unsubscribed via email"; 
     } 
     } 

     if (status.match(/unsubscribed/i)) { 
     UrlFetchApp.fetch(url, {muteHttpExceptions: true}); 
     } 

     formula = hyperlink.replace("#LINK", threads[t].getPermalink()); 

     log_(status, message.getSubject(), formula, message.getFrom(), url); 

    } 
    } catch (e) {Logger.log(e.toString())} 

} 


function saveConfig(params) { 

    try { 

    doProperty_("LABEL", params.label); 

    stop_(true); 

    ScriptApp.newTrigger('doGmail') 
    .timeBased().everyMinutes(15).create(); 

    return "The Gmail unsubscriber is now active. You can apply the Gmail label " + params.label + " to any email and you'll be unsubscribed in 15 minutes. Please close this window.";  

    } catch (e) { 

    return "ERROR: " + e.toString(); 

    } 

} 

function parseEmail_(email) { 
    var result = email.trim().split("?"); 
    return result[0]; 
} 

そしてconfig.htmlと呼ばれる2つの他の.htmlファイル:

<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css"> 

<script> 

    function closeWindow() { 
    google.script.host.close(); 
    } 

    function showError(error) { 
    document.getElementById("error").innerHTML = error; 
    } 

    function showConfig(params) { 

    if (params.label !== "") 
    document.getElementById("label").value = params.label; 

    return; 

    } 

    function validate() { 

     var label = document.getElementById("label").value; 

     if (label.trim() === "") { 
      showError("Please enter a Gmail label name.."); 
      return; 
     } else { 
      showError("Saving configuration, please wait.."); 
      var params = { 
       label: label 
      }; 
      google.script.run.withSuccessHandler(showError).saveConfig(params); 
     } 
    } 

</script> 

<form> 
    <div class="form-group block"> 
     <p style="margin-bottom:4px;">Enter Gmail Label Name:</p> 
     <input type="text" id="label" name="label" placeholder="Your email address.." style="width: 250px;" /> 
    </div> 


    <p> 
     <input class="blue" type="button" value="Save configuration" onclick="validate()" /> 
     <input class="green" type="button" value="Close window" onclick="google.script.host.close()" /> 
    </p> 

    <p class="error" id="error"></p> 

</form> 

<script> 
    google.script.run.withSuccessHandler(showConfig).getConfig(); 
</script> 

そして最後にhelp.html:これは3つのファイル、Googleのスクリプトで構成されてい

<head> 
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css"> 
<base target="_blank"> 
</head> 
<div class="block"> 


    <p>If you are need help with the program, please refer to the <a href="https://www.labnol.org/internet/gmail-unsubscribe/28806/">online tutorial</a>. For support and customization, please submit your requirements at <strong><a href="https://ctrlq.org">ctrlq.org</a></strong>.</p> 
</div> 

<div class="block"> 
    <a class="button blue" href="mailto:[email protected]" style="width:120px;">[email protected]</a> 
    <a class="button green" href="https://twitter.com/labnol" style="width:120px;margin-right:10px">Tweet @labnol</a> 
<input class="red" type="button" value="Close" onclick="google.script.host.close()" /> 
</div> 

があります私のアカウントが危険にさらされる可能性がありますか?

+0

私はGoogleスクリプトのエキスパートではありませんが、最初はスクリプトが行うべきことをしていると思われますが、登録解除リンクを探してメールを送信しています彼はもっと悪質なことをしようとしているが、私はそれを保証することはできない。一言で言えば、これはこの質問のための適切な場所ではないかもしれませんが、私は最悪の質問と思われます。 –

+0

ええ、私もそれを分析しようと何かを見つけることができませんでしたが、私は確信していません...それは非常に魚のようなにおいがします。あなたのご意見ありがとうございます。 – Cctest

答えて

1

私はこのGoogle Scriptの著者であり、完全に安全です。実際には、完全なソースコードにアクセスできるので、何をしているのか正確に知ることができます。 https://security.google.com/settings/security/permissions

    1. Goはあなたが

    2. 次のクリックをアンインストールするスクリプトをクリックしてください:あなたは、あなたのアカウントからすべてのGoogleのスクリプトを削除したい場合

      はまた、ここでの方法です削除して完了です。

  • +0

    結局これは質問をするのにふさわしい場所でした:-)。とにかく、スクリプトが悪意のあるものではなく、あなた自身を守る選択肢があることを知ったので、質問は話題として閉じられるべきだと思う。 –

    +0

    これをクリアしていただきありがとうございます。あなたのコードを疑って申し訳ありませんが、私は最近のunroll.meスキャンダルのために少し編集的でした。私はこの質問が話題として閉じられるべきだということに同意する。 – Cctest

    関連する問題