下記サイトにログイン後のページに表示される情報を取得したいです。
https://c0banpool.com/index.php?page=login
GASだけでもUrlFetchApp.fetchでログイン情報をPOSTすることにより、
ログイン後画面からもスクレイピングできるとの記事を読みやってみましたが、
ログインできませんでした。
ctokenの部分がネックなのかもしれません。
宜しくお願い申し上げます。
GoogleAppsScript
1function GetPoolinfo() { 2 var ctoken = GetCtoken() 3 Logger.log(ctoken); 4 //POSTデータ 5 "ctoken="+ ctoken +"&username=??%40gmail.com&password=????" 6 var payload = { 7 "ctoken": ctoken, 8 "username" : "??@gmail.com", 9 "password" : "????" 10 } 11 // POSTオプション 12 var options = { 13 "method" : "POST", 14 "payload" : payload 15 } 16 17 // アクセス先(http headerなどでPOSTのURLなどを調べる) 18 var url = "https://c0banpool.com/index.php?page=login" 19 // POSTリクエスト 20 var response = UrlFetchApp.fetch(url, options); 21 var content = response.getContentText(); 22 Logger.log(content); 23 24 // レスポンスヘッダーからcookieを取得 25 var cookies = response.getHeaders()["Set-Cookie"]; 26 27 // ログインで認証されたcookieはヘッダーで使用 28 var headers = { 'Cookie' : cookies }; 29 options = { 30 method : "get", 31 headers : headers, 32 followRedirects: true, //リダイレクトあり 33 }; 34 var topUrl = "https://c0banpool.com/index.php?page=statistics&action=pool" 35 response = UrlFetchApp.fetch(topUrl, options); 36 var content = response.getContentText("UTF-8"); 37 //Logger.log(content); 38} 39 40function GetCtoken() { 41 // POSTデータ 42 var payload = { 43 id : "loginForm" 44 } 45 // POSTオプション 46 var options = { 47 "method" : "POST", 48 "payload" : payload, 49 "followRedirects" : false 50 } 51 52 // アクセス先(http headerなどでPOSTのURLなどを調べる) 53 var url = "https://c0banpool.com/index.php?page=login" 54 // POSTリクエスト 55 var response = UrlFetchApp.fetch(url, options); 56 var content = response.getContentText(); 57 //Logger.log('============変換後 "%s".',response); 58 59 var step1 = content.match(/<input type="hidden" name="ctoken" value=".*>/g); 60 61 var extract = [] 62 for (var i=0;i<=step1.length-1;i++){ 63 extract.push(step1[i] 64 .replace(/<input type="hidden" name="ctoken" value="/g,"") 65 .replace(/">/g,"") 66 .replace(/\n/g)); 67 } 68 var extract= extract[0]; 69 //Logger.log(extract); 70 return extract; 71} 72
あなたの回答
tips
プレビュー