SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
「OKグーグル! 銀行振込1000円」
2019/09/27
RCC夏期成果物発表会 @hnw
1
誰?
● 所属: KLab株式会社
○ スマートフォンゲームを作ってます
○ 色々な方面に詳しい技術者がいます
● Twitter: @hnw / GitHub: hnw
○ 興味:Web技術、クラウド、セキュリティ
2
今日お話しすること
● 夏休みに趣味で作っていたシステムの紹介
○ 概要と動機
○ デモ
○ システム構成・知見の紹介
3
今日お話しすること
● 夏休みに趣味で作っていたシステムの紹介
○ 概要と動機
○ デモ
○ システム構成・知見の紹介
4
夏休みに作ったもの
5
銀行振込1000円
コレ必要?
● 各銀行の公式機能では残高確認どまり
○ 自作するしかない
● 銀行のシステムって手数が多くて面倒
○ 自動化して少しでも楽したい
● もはや要不要ではない
○ プログラムからマネーを触るのスリルある
6
今日お話しすること
● 夏休みに趣味で作っていたシステムの紹介
○ 概要と動機
○ デモ
○ システム構成・知見の紹介
7
今日お話しすること
● 夏休みに趣味で作っていたシステムの紹介
○ 概要と動機
○ デモ
○ システム構成・知見の紹介
8
システム構成
9
今回は銀行サイトを自動操作したい
● 銀行サイトはJavaScriptなしでは使えない
○ セキュリティ上の理由?
● スクレイピングライブラリは不適当
○ 例:Beautiful Soup, Nokogiri
10
そこでPuppeteerを使います
● ヘッドレスChrome用ライブラリ
○ Node.jsでブラウザ操作を記述
○ ブラウザのフル機能が使える
■ JS必須サイトの自動操作ができる
○ ディスプレイが無い環境でも動く
■ 例:クラウド環境、サーバ機
11
Slackは何に使うのか
● NAT越えに利用
○ 0円で済むのが良い
○ 有料なら他にも選択肢はある
● 家の外から家のマシンを使うのは面倒
○ 本来ならクラウドに置いた方がシンプルになる
○ 今回はどうしても家でやりたかった
12
システム構成(再掲)
13
銀行パスワード
家の中に置くか外に置くか
● 銀行パスワードを家の外に置きたくない
○ 心情的な理由が大きい(本当に家の方が安全か?)
● 銀行振込以外の部分は大丈夫なのか
○ 音声入力やSlackも攻撃されたら怖い
○ 対策については後述
14
サブシステムの詳細
● 音声入力→Slack
● Slack→コマンド起動
● 銀行振込コマンド
15
サブシステム1:音声入力→Slack
● IFTTTのアプレットで実現
○ この部分はコーディング無し
● コマンドの指定方法
○ 固定文字列 [+任意文字列1種] [+任意数字列1種]
16
サブシステム1:音声入力→Slack
17
● 文字列を追加・並べ替えしてSlackに送れる
サブシステム2:Slack→コマンド起動
18
● hnw/slack-commander
○ Goで自作
● メッセージを受け取り外部コマンドを起動
○ コマンドの出力をメッセージとして返す
● 起動コマンドをTOMLで指定できる
サブシステム2:Slackからコマンド起動
19
slack_token = 'XXXXXXXXXXXX'
[[commands]]
keyword = '振込 *'
command = 'banking/cli.js 振込 * -v'
timeout = 900 # 15min
config.toml
サブシステム3:銀行振込
20
● Puppeteerでプログラミングするだけ
○ CSSセレクタやXPathで要素を辿っていく
● 開発時はブラウザを表示することもできる
○ ヘッドレスで実行するとデバッグが大変
○ 非ヘッドレスだとChrome DevTools が使えるので楽
サブシステム3:銀行振込
21
● リスク回避策
○ スマホ認証のある銀行を使う
○ 銀行サイトの登録済口座に振り込む
■ 赤の他人に送る事故は起きない
→こわいけど大事故は起きないはず…
銀行振込の動作例
22
知見: 実用的だった
23
● 当初の予想より便利
○ 音声認識の精度はかなり高い、その意味で実用的
○ 移動中など文字打つより音声の方が早いこともある
○ テレホンバンキングの代わりになりそう
ハマったところ: 銀行に怒られた
24
● 銀行サイトでデバッグしすぎて怒られた
● 電話したら「2回目はないよ」って言われた
お客さまの振込先口座確認サービスのご利用を制限させていただいています。振込先登録
口座の情報に誤りが無いかご確認のうえ、振込手続を行ってください。なお、振込先口座確
認サービスの利用再開をご希望される場合、新生パワーコール (0120-456-858
:*1→2<スマホ認証サービス・操作方法などに関するお問い合わせ> ) までご連絡くだ
さい。
さらに詳しい内容
25
● 「KLab Tech Book Vol.5」に寄稿しました
○ 技術書典7で同人誌を頒布します&電子版ダウンロード
ページ
● 読んでもらえると嬉しいです!
26
完

Más contenido relacionado

Similar a 「OKグーグル! 銀行振込1000円」

配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
yut148atgmaildotcom
 
Android & Nui & Physical Computing
Android & Nui & Physical ComputingAndroid & Nui & Physical Computing
Android & Nui & Physical Computing
Takahiro KUREBAYASHI
 
Prig 残業泥棒 - 01. プロローグ 120121 杉浦
Prig   残業泥棒 - 01. プロローグ 120121 杉浦Prig   残業泥棒 - 01. プロローグ 120121 杉浦
Prig 残業泥棒 - 01. プロローグ 120121 杉浦
urasandesu
 

Similar a 「OKグーグル! 銀行振込1000円」 (20)

Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
 
機械学習でテスト実行を効率化するLaunchable.pdf
機械学習でテスト実行を効率化するLaunchable.pdf機械学習でテスト実行を効率化するLaunchable.pdf
機械学習でテスト実行を効率化するLaunchable.pdf
 
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
 
Reviewing_machine_learning_program.pdf
Reviewing_machine_learning_program.pdfReviewing_machine_learning_program.pdf
Reviewing_machine_learning_program.pdf
 
Android & Nui & Physical Computing
Android & Nui & Physical ComputingAndroid & Nui & Physical Computing
Android & Nui & Physical Computing
 
斉藤之雄 が 公立大学 産業技術大学院大学 で獲得したこと。
斉藤之雄 が 公立大学 産業技術大学院大学 で獲得したこと。斉藤之雄 が 公立大学 産業技術大学院大学 で獲得したこと。
斉藤之雄 が 公立大学 産業技術大学院大学 で獲得したこと。
 
Handii スタートアップエンジニア開発課題LT day2
Handii スタートアップエンジニア開発課題LT day2Handii スタートアップエンジニア開発課題LT day2
Handii スタートアップエンジニア開発課題LT day2
 
20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用
 
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
 
IT業界とソフトウェア技術者を取り巻く今日の様相と荒波の将来への船出
IT業界とソフトウェア技術者を取り巻く今日の様相と荒波の将来への船出IT業界とソフトウェア技術者を取り巻く今日の様相と荒波の将来への船出
IT業界とソフトウェア技術者を取り巻く今日の様相と荒波の将来への船出
 
Klabの梅雨対策
Klabの梅雨対策Klabの梅雨対策
Klabの梅雨対策
 
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
 
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
 
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことアプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
 
エンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったことエンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったこと
 
楽天の中のわたしと勉強会
楽天の中のわたしと勉強会楽天の中のわたしと勉強会
楽天の中のわたしと勉強会
 
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai 株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
 
Prig 残業泥棒 - 01. プロローグ 120121 杉浦
Prig   残業泥棒 - 01. プロローグ 120121 杉浦Prig   残業泥棒 - 01. プロローグ 120121 杉浦
Prig 残業泥棒 - 01. プロローグ 120121 杉浦
 
誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)
 

Más de Yoshio Hanawa

Más de Yoshio Hanawa (20)

自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみた自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみた
 
Zend VMにおける例外の実装
Zend VMにおける例外の実装Zend VMにおける例外の実装
Zend VMにおける例外の実装
 
Zend VMにおける例外の実装
Zend VMにおける例外の実装Zend VMにおける例外の実装
Zend VMにおける例外の実装
 
ぼくのかんがえる
さいきょうの銀行振込
ぼくのかんがえる
さいきょうの銀行振込ぼくのかんがえる
さいきょうの銀行振込
ぼくのかんがえる
さいきょうの銀行振込
 
浮動小数点数とOSSのバグの話
浮動小数点数とOSSのバグの話浮動小数点数とOSSのバグの話
浮動小数点数とOSSのバグの話
 
PHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったことPHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったこと
 
GitHubからお金をもらった話
GitHubからお金をもらった話GitHubからお金をもらった話
GitHubからお金をもらった話
 
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べたiOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
 
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係
 
家庭用ブロードバンドルータ上でWordPressを動かそう
家庭用ブロードバンドルータ上でWordPressを動かそう家庭用ブロードバンドルータ上でWordPressを動かそう
家庭用ブロードバンドルータ上でWordPressを動かそう
 
Laungage Update PHP編
Laungage Update PHP編Laungage Update PHP編
Laungage Update PHP編
 
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作るPHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
 
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話
 
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説するphp-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
 
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
 
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックPHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
 
PHPの正規表現と最長一致
PHPの正規表現と最長一致PHPの正規表現と最長一致
PHPの正規表現と最長一致
 
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイントPHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
 
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
 

「OKグーグル! 銀行振込1000円」