1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Glitchでプロジェクトが停止された話

Last updated at Posted at 2023-03-29

停止の通知

Glitchのstaticプロジェクトが停止されてしまった。

ダッシュボードには表示

ダッシュボードには当該プロジェクトが表示されている。

Untitled

停止された旨のダイアログ

ダッシュボードからプロジェクトを開こうとすると This project has been suspended というダイアログが表示される。PBRというのはPaid Beta Requestsの略らしい。

Untitled

ダウンロードは可能

プロジェクトが停止されてもデータが削除されるわけではなく、tgzファイルとしてダウンロードさせてもらうことはできる。ただしダウンロードされてきたtgzふぁいるは実際にはtarファイルであって、gzipでは圧縮されていなかった。そのためtar zxvf hogehoge.tgz などとするとエラーになる。tar xvf hogehoge.tgzでよい。これはバグだろうと思うけど、藪蛇になってアカウントごと削除されたら困るので深く突っ込まないでおく。

問い合わせ結果

問い合わせのメールを送ったところ、コードの中にBase64文字列(base 64 encoding)が含まれており、それは難読化されたコード(Obfuscated Code)して解釈される。これが規約(Terms of Service)に違反しているということであった。後述するように実際のところコードのどこにもBase64で符号化した文字列は含んでいなかったのだが、"data:text/html;base64," + btoa(text) というコードはあった。これは単にサンプルのHTMLファイルをダウンロードしてもらうためだけのもので、難読化を意図しているわけでもないのだが、だめらしい。単に base64 っていう文字列をマッチングしてるだけじゃないのか疑惑。

Your project was flagged by our system for containing potentially malicious code. More specifically, the base 64 encoding in localfile.html is Obfuscated Code and is against our Terms of Service. You should be able to upload these files as a new project with that piece removed.

Here's a list of things that will trigger a project suspension:

This includes:

  • Obfuscated code
  • Code relating to cryptocurrency mining
  • Code used to spam others
  • Code used for phishing
  • Code used for spying/gaining unauthorized access to websites
  • Code used to override the default downtime for free apps
  • Code that overloads our system and prevents the enjoyment of Glitch by others.

Projects that contain code used for these purposes will remain suspended.

どんなコードだったか

ウェブページにダウンロードボタンをつけたいことがある。例えばcanvasでお絵描きしてそれをPNGでダウンロードしてもらうとか。僕は localfile.html というHTMLファイルを作成して、その中に localfile.html 自身をダウンロードしてもらうボタンをつけたかった。以下はそのコード。Base64文字列は含んでいないし、どこが難読化かと思う。data URIを使用しているとかbtoa関数を使っているのがアウトなのかなぁ。

<html>
  <head> </head>
  <body>
    <input />
    <button>Download this page</button>
    <a>Download this page</a>
    <script>
      window.addEventListener("load", (e) => {
        fetch(location.href).then((response) => {
          if (response.ok) {
            response.blob().then((blob) => {
              blob.text().then((text) => {
                console.log(response.blob());
                document.querySelector("a").href =
                  "data:text/html;base64," + btoa(text);
              });
            });
            document.querySelector("a").target = "_blank";
            document.querySelector("a").download = "localfile.html";
          } else {
            console.log("failed to download " + location.href);
          }
        }); //fetch
        setTimeout(() => {
          document.querySelector("input").value = location.href;
        }, 10);
      });
    </script>
  </body>
</html>

困ったこと

プロジェクト名を変更できない

Glitchにはそもそもプロジェクトを削除する機能は無く、ただ「アーカイブ」することしかできない。なので同名のプロジェクトを作ろうとすると元のプロジェクトの名前を変える必要があるのだが、それはできない。

カスタムドメインを削除できない

Glitchプロジェクトにはカスタムドメインを割り当てることができるのだが、当然ながら二つ以上のプロジェクトに同じカスタムドメインを割り当てることはできない。サスペンドされたプロジェクトは操作できないのでカスタムドメインの割り当てを解除できない。いままでGlitchのカスタムドメインで提供していたページについては、GoogleのFirebase Hostingに移行することにした。

関連ページ

このページはNotionで編集したものをQiitaに貼り付けて作成しています。

Notionがホストしている画像はもしかしたらうまく貼り付けられないかも。

Notion

Glitchでプロジェクトが停止された話

Qiita

Glitchでプロジェクトが停止された話 - Qiita

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?