質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

3378閲覧

GASでログインを要するサイトへのスクレイピングができません

jargon2020

総合スコア3

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/04/27 05:06

GASを用いて,ログインが必要なサイト(https://tecopla.com/users/sign_in)へのスクレイピングを試みていますが,何度トライしてもエラーが返ってきてしまします.

コードは以下のとおりです.

GAS

1function myFunction_test(){ 2 //POSTデータ 3 var payload={ 4 "user[email]":"メールアドレス", 5 "user[password]":"パスワード" 6 } 7 //POSTオプション 8 var options={ 9 "method":"POST", 10 "payload":payload, 11 "validateHttpsCertificates" : false, 12 "followRedirects":false 13 } 14 //サイトのPOST 15 var url="https://tecopla.com/users/sign_in" 16 //POSTリクエスト 17 var response=UrlFetchApp.fetch(url,options); 18 19コード

これを実行すると,
エラー
Exception: Request failed for https://tecopla.com returned code 422. Truncated server response: <!DOCTYPE html>

<html> <head> <title>The change you wanted was rejected (422)</title> <meta name="viewport" content="width=device-width,initial... (use muteHttpExceptions option to examine full response)

となります.解決策が見当たらず困っています.
ご回答よろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

サイトのソースを見ると、

HTML

1<input type="hidden" name="authenticity_token" value="xxxxxxxx">

という要素にノンスが設定されています。ポストする際にはこの値も設定が必要かと思われます。

投稿2021/04/30 08:39

draq

総合スコア2573

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jargon2020

2021/04/30 11:36

ご回答ありがとうございます. payloadに"authenticity_token"とその値を設定しましたが,やはり同じエラーが返ってきます...
draq

2021/04/30 15:31

どんな値を設定したのでしょうか?ブラウザでアクセスして確認したauthenticity_tokenの値をコピーしてたりしませんか?
Jetson_Pose

2022/11/07 06:06

かなり時間が経過していますが、コメント失礼します。私も現在同じようなことで困っています。 結局ノンスが設定されているWebページにGASでログインするのは難しいのでしょうか?
draq

2022/11/07 11:13

> Jetson_Pose ここで聞くんじゃなくて新しく質問を作成するべきです。ここで聞いても私しか質問を見ていません。 一応回答しておくと、制限していなければ GAS でも以下のようにすればログインできるはずです。 1. ログインURLにGETアクセスする。 => ログインページのHTMLがレスポンスとして返るはず。 2. レスポンス(HTML)から設定されているノンスとクッキー(セッションキー)を保存する。 3. ノンスとクッキー(セッションキー)とログインIDなど必要な値をログイン先にPOSTする。 意味が分からない場合は、新しく質問を作成してください。
Jetson_Pose

2022/11/09 05:51

> draq ご回答ありがとうございます。一度試してみて、わからないことがあれば新しく質問を作成させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問