#はじめに
pythonを使ってニコニコ静画から画像をダウンロードするプログラムを作っていたのですが、その際にwebサイトの分析をしました。
その際、chromeのディベロッパーツールを使用したのですが、分析手順について順にやったことを書いていきます。
#1.ログイン編
ニコニコ静画はログインしないと画像をすべて見ることができません。
seleniumを使ってログインすることも考えましたが、今回は練習がてらpostを使用してログインすることにしました。
##postについての解析
chromeにおいて右クリックをして「検証」というボタンを押し、「Network」というタブを押すとこのようなページになります。
この画面の「network」タブではホストと通信した内容が分かるのですが、デフォルトではページが遷移すると前のページの情報はなくなってしまいます。
そこでページが遷移してもログが残るように「network」タブで「preserve log」にチェックを入れ、ログインをしてみます。
すると上の写真のように、何やらいろいろ出てきます。
中身を一個ずつ見ていくと、下の写真のようにメールアドレスやパスワードをpostしたものが見つかったので、
「Headers」内の「general」及び「form data」を分析する。
どうやらニコニコ静画のログインでは
https://account.nicovideo.jp/login/redirector?show_button_twitter=1&site=seiga&show_button_facebook=1&sec=header_pc&next_url=%2Fmanga%2F%3Ftrack%3Dhome
というurlに
mail_tel: mail adress password: password auth_id: auth_id
をpostしているらしい。
参考
##auth_idが欲しい
postする中の、auth_id
が何なのかわからない。
おそらくログイン時に発行されるものなのだろうとあたりをつけて調べたところ、どうやらログインページに行った際に発行される数字らしい。
早速chromeの検証のうち、「elements」タブから「ctrl+F」でauth_id
と調べた。
すると
中身は、
<input type="hidden" name="auth_id" value="163-----">
となっていることが分かった。
なのでpythonのrequestとbeautifulsoupを使用して取得しようとしたが、どうにもうまくいかない。
調べた結果、どうやらjapascriptでアクセスしてから描写されているらしい。
よって本当は使いたくなかったが、seleniumを使用して取得することにした。
参考
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# ブラウザのオプションを格納する変数をもらってきます。
options = Options()
# Headlessモードを有効にする(コメントアウトするとブラウザが実際に立ち上がります)
options.set_headless(True)
# ブラウザを起動する
driver = webdriver.Chrome("chromedriver.exe", chrome_options=options)
# ブラウザでアクセスする
driver.get("https://account.nicovideo.jp/login?site=seiga&next_url=%2F&sec=header_pc&cmnhd_ref=device%3Dpc%26site%3Dseiga%26pos%3Duserpanel")
html = driver.page_source.encode('utf-8')
soup = BeautifulSoup(html,'lxml')
token = soup.find('input', {'name':'auth_id'})['value']
これを実行すると無事token
にauth_id
の数字があることを確認できた。
#2.url解析編
どうやらニコニコ静画には
漫画の番号
エピソードの番号
画像の番号
が存在するようだ。
どうも
https://seiga.nicovideo.jp/comic/漫画の番号
https://seiga.nicovideo.jp/watch/mgエピソード番号
https://deliver.cdn.nicomanga.jp/thumb/画像の番号
がurlとなっており、画像の番号のみ連番になっているようだ。
これはいろいろな作品のページを開き、urlを見比べることや以下の記事を読んで発見した。
#まとめ
以上の手順によって、
ログイン方法、
ログイン後の作品ページurl
が分かったので、作品をダウンロードするスクリプトは完成した。
が、あまり使い勝手はよくなく、この記事はwebページの分析に焦点を当てたいので公開しないこととする。
以上。