1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

chromeのディベロッパーツールを使用してニコニコ静画について調べた手順

Posted at

#はじめに
pythonを使ってニコニコ静画から画像をダウンロードするプログラムを作っていたのですが、その際にwebサイトの分析をしました。
その際、chromeのディベロッパーツールを使用したのですが、分析手順について順にやったことを書いていきます。

#1.ログイン編
ニコニコ静画はログインしないと画像をすべて見ることができません。
seleniumを使ってログインすることも考えましたが、今回は練習がてらpostを使用してログインすることにしました。

##postについての解析

chromeにおいて右クリックをして「検証」というボタンを押し、「Network」というタブを押すとこのようなページになります。

image.png

この画面の「network」タブではホストと通信した内容が分かるのですが、デフォルトではページが遷移すると前のページの情報はなくなってしまいます。
そこでページが遷移してもログが残るように「network」タブで「preserve log」にチェックを入れ、ログインをしてみます。

tesrt.png

すると上の写真のように、何やらいろいろ出てきます。
中身を一個ずつ見ていくと、下の写真のようにメールアドレスやパスワードをpostしたものが見つかったので、
「Headers」内の「general」及び「form data」を分析する。

asd.png

どうやらニコニコ静画のログインでは

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と調べた。
すると

hgfv.png

中身は、

.html
<input type="hidden" name="auth_id" value="163-----">

となっていることが分かった。
なのでpythonのrequestとbeautifulsoupを使用して取得しようとしたが、どうにもうまくいかない。

調べた結果、どうやらjapascriptでアクセスしてから描写されているらしい。

image.png

よって本当は使いたくなかったが、seleniumを使用して取得することにした。

参考

.py
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']


これを実行すると無事tokenauth_idの数字があることを確認できた。

#2.url解析編

どうやらニコニコ静画には
漫画の番号
エピソードの番号
画像の番号
が存在するようだ。

どうも
https://seiga.nicovideo.jp/comic/漫画の番号

https://seiga.nicovideo.jp/watch/mgエピソード番号

https://deliver.cdn.nicomanga.jp/thumb/画像の番号

がurlとなっており、画像の番号のみ連番になっているようだ。

これはいろいろな作品のページを開き、urlを見比べることや以下の記事を読んで発見した。

#まとめ

以上の手順によって、
ログイン方法、
ログイン後の作品ページurl
が分かったので、作品をダウンロードするスクリプトは完成した。
が、あまり使い勝手はよくなく、この記事はwebページの分析に焦点を当てたいので公開しないこととする。
以上。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?