携帯電話のTL取得制限にさようなら!twitterをスクレイピングして携帯用HTMLに変換するサイト作った
最近twitterAPIのPOSTメソッド裏技が通用しなくなって、タイムラインをAPIで持ってくるのにも制限がかかるようになりました。
ここで困ったのが、今まで使っていたmovatwitterがAPIを利用しているために制限にひっかかるようになってしまったこと。
携帯でも容赦なく更新しまくる自分にとってはこれは痛い。
そこで「自分でスクレイピングして変換すればいいんじゃね?」と思い立ち、実装してみました。
ログインからTL取得まで
Twitterのログインは普通にPOSTメソッドで投げるわけですが、その際にauthenticity_tokenなるランダム文字列を一緒に渡す必要があります。
そのためスクレイピングでその値とそこで渡されるクッキーを取得し、ID、パス他もろもろと一緒に/sessionsに投げます。
以降はクッキーをやりとりすることでセッションを維持しつつ自分のTLを持って来れます。*1
post
postはログイン時同様にtokenが必要となるので持ってきてPostメソッドで/status/updateに投げればOK
replyの取得
replyは普通に/repliesか/#repliesで取ってこれるのかと思ったらこれがうまくいかなくて、いろいろ試したところ/→/replies→/#repliesで取得できました。
セキュリティ
前述のように一旦ログインするとクッキーのやりとりでいろいろやるのでパスワードそのものの送信はログイン時の1回だけでWebからログインするときはSSL通信もしてるっぽい。でもそれ以降は普通に流してるので通信傍受されてたらセッションハイジャックされるかも?自分が作ったサービスもPHPでセッション管理してるので同様の危険性はあるけど、一応それ+αで細工してます。まぁえろい人に本気出されるとあんまりあてにはならないけど気休め程度にはなるかと思って。
ちなみにIDやらパスはサーバに保存してません。
んでできたサイトがこちら 公開中止
注意事項
TODO
@とかfavとかReTweetとか
言い訳みたいになってしまいますがまともに開発したことがないので例外処理とかは鋭意勉強中です…
個人的には普段movatwitter使ってもばつい重かったり制限食らったらこっち使うみたいなことしてます。
あ、あとサービス名募集w
Thanks to:
@takeshik氏
PHP+SimpleXMLElementでTwitterのスクレイピング - 肉とビールとパンケーキ by @sotarok
HTTP_Request
PEAR::Net_UserAgent_Mobile 3G対応携帯判別(ケータイ判別) [dozo dokuwiki.php]
*1:セッション管理がクッキーだけって…