過去に作ったソフトウェアのメモ-第一弾-したらば巡回くん(2)

 主要なカテゴリの巡回が終わったのでそのことについてのメモです。連続アクセスエラーが今回の巡回の問題点です。現在、連続アクセスエラーがでるかどうかギリギリの間隔でアクセスしています。まあそれでも、全部を巡回するのに一週間くらいかかります。seleniumでHTTPヘッダーが取得できれば、簡単に処理できるんですが、どうやらできないらしいです。だから受け取ったWebページのタイトルを見て、連続アクセスエラーかどうかチェックするようにしています。連続アクセスエラーなら実は表示されるページは決まっていますので。しかし、この実装には不足があるようです。どんな不足かというと、連続アクセスエラーかどうか完璧に識別できていないということです。実は先程、連続アクセスエラー時に表示されるWebページは決まっている、と書きましたが、このページ、他のエラーでも表示される場合があるのです。だからこのエラーが出てしまった場合、その後に続く処理を決め打ちで行うことができません。判定する方法が明らかでない2つの場合について、適切な処理を書くことはできません。なにか続きの処理を書いたとしても、当てはまらない場合は例外を出してプログラム全体が止まってしまうでしょう。。。そんなわけでその部分はlogに出力しておいて、私が手作業で確認する方法しかありません。ただそんなめんどくさいことはする気がありません。
 結果的には巡回するべきところを網羅的に巡回することができません。

seleniumからHTTPクライアントへの乗り換えが最優先課題だということが明らかになりました。HTTPクライアントライブラリなら、ヘッダーによって処理を分けるような記述ができるようになります。これによりエラーを確実に取得でき、エラーの場合の処理は決め打ちでできると思います。まあそこはしたらば掲示板がどのような場合にどのようなヘッダーを返すのかもうちょっと調べないといけません。まあいくつか標本を出して、入れそうなことを記述してみます。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●タイトル:準備中
・HTTPヘッダーの抜粋
200 OK

date:
Sat, 30 May 2020 02:25:18 GMT
server:
Apache
set-cookie:
ldsuid=202.178.91.9.1590805518603700; path=/; expires=Fri, 28-Aug-20 02:25:18 GMT
accept-ranges:
bytes
access-control-allow-credentials:
true
content-length:
444
connection:
close
content-type:
text/html

・メモ
開設準備中の板ならこれが出るようだ。
30秒後にhttp://rentalbbs.livedoor.comへ飛ぶように設定されている。

・例
https://jbbs.shitaraba.net/business/11008/
https://jbbs.shitaraba.net/business/11305/
https://jbbs.shitaraba.net/business/11306/
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●case1 タイトル:JBBS
・HTTPヘッダーの抜粋
200 OK

date:
Sat, 30 May 2020 02:28:40 GMT
server:
Apache
accept-ranges:
bytes
access-control-allow-credentials:
true
content-length:
195
connection:
close
content-type:
text/html

・メモ
掲示板がユーザーにより閉鎖された場合はこれが出るようだ。
3秒後にhttp://jbbs.shitaraba.comへ飛ぶ。

・例
https://jbbs.shitaraba.net/auto/344/
https://jbbs.shitaraba.net/auto/343/

●case2 タイトル:JBBS
タイトル:JBBSの場合と同じな場合あり。
https://jbbs.shitaraba.net/otaku/1323/

200 OK

●case3 タイトル:したらば掲示

・メモ
この掲示板は停止されました。とのメッセージ

・ヘッダー
200 OK

date:
Sat, 30 May 2020 03:08:36 GMT
server:
Apache
last-modified:
Thu, 05 Feb 2015 06:24:06 GMT
accept-ranges:
bytes
content-length:
1012
access-control-allow-credentials:
true
connection:
close
content-type:
text/html


https://jbbs.shitaraba.net/internet/7223/
https://jbbs.shitaraba.net/internet/7227/

●case4 タイトル:閉鎖済み - したらば掲示

・メモ
この掲示板は閉鎖されています。とのメッセージ

・ヘッダー
200 OK

date:
Sat, 30 May 2020 03:10:34 GMT
server:
Apache
last-modified:
Sun, 17 Jan 2010 15:21:45 GMT
accept-ranges:
bytes
content-length:
588
access-control-allow-credentials:
true
connection:
close
content-type:
text/html

・例
https://jbbs.shitaraba.net/internet/7229/
https://jbbs.shitaraba.net/internet/7231/

●case5 タイトル:一時休止中 - したらば掲示板 :{掲示板タイトル}

・メモ
一時休止中 - したらば掲示板 : …のあとにタイトルが続く
そのためcontent-length:はいろいろな値を取りそう。
あとjavascriptがついてたりついてなかったり

・ヘッダー
200 OK

date:
Sat, 30 May 2020 03:16:01 GMT
server:
Apache
accept-ranges:
bytes
access-control-allow-credentials:
true
content-length:
654
connection:
close
content-type:
text/html


・例
https://jbbs.shitaraba.net/internet/7241/
https://jbbs.shitaraba.net/internet/7327/

●case6 タイトル:livedoor したらば掲示

・メモ
この掲示板は、JBBS管理者権限により停止されました。との

200 OK

https://jbbs.shitaraba.net/otaku/1322/

●case7 タイトル:livedoor レンタル掲示板 : したらば
・メモ
この掲示板は、JBBS管理者権限により一時停止中です。との


https://jbbs.shitaraba.net/computer/156/

200 OK

●case8 タイトル:指定されたページまたはファイルは存在しません

・ヘッダー
403 Forbidden

date:
Sat, 30 May 2020 03:27:42 GMT
server:
Apache
last-modified:
Thu, 06 Dec 2018 15:23:22 GMT
accept-ranges:
bytes
content-length:
1305
access-control-allow-credentials:
true
connection:
close
content-type:
text/html
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
いちばん重要な結果はcase8ですね。これは連続アクセスエラーの場合の内容です。ヘッダーの数字がこれだけ403であるのなら、従来の方法なら使いやそうそうです。具体的には403だった場合は処理を数秒おいてまた開始するなどして、アクセスエラーを回避するなどです。
続いて、各板の状態チェックをhttps://jbbs.shitaraba.net/bbs/api/setting.cgi/[カテゴリ]/[番地]/のAPIを使ってチェックする場合について考えてみましょう。
もし上に上げたcase1~8ですべて403等のエラーのコードを出してくれたのなら、助かります。

●case1
https://jbbs.shitaraba.net/bbs/api/setting.cgi/internet/7223/
403 Forbidden
date:
Sat, 30 May 2020 03:37:30 GMT
server:
Plack::Handler::Starlet
vary:
User-Agent
content-type:
text/html; charset=UTF-8
content-length:
1310
access-control-allow-credentials:
true
connection:
close

●case2
https://jbbs.shitaraba.net/bbs/api/setting.cgi/otaku/1323/
403 Forbidden
date:
Sat, 30 May 2020 03:48:09 GMT
server:
Plack::Handler::Starlet
vary:
User-Agent
content-type:
text/html; charset=UTF-8
content-length:
1310
access-control-allow-credentials:
true
connection:
close

●case3
https://jbbs.shitaraba.net/bbs/api/setting.cgi/internet/7223/
403 Forbidden
date:
Sat, 30 May 2020 03:48:51 GMT
server:
Plack::Handler::Starlet
vary:
User-Agent
content-type:
text/html; charset=UTF-8
content-length:
1310
access-control-allow-credentials:
true
connection:
close

●case4
https://jbbs.shitaraba.net/bbs/api/setting.cgi/internet/7229/
404 Not Found
date:
Sat, 30 May 2020 03:51:09 GMT
server:
Plack::Handler::Starlet
vary:
User-Agent
content-type:
text/html; charset=UTF-8
content-length:
1305
access-control-allow-credentials:
true
connection:
close

●case5
https://jbbs.shitaraba.net/bbs/api/setting.cgi/internet/7241/

403 Forbidden
date:
Sat, 30 May 2020 03:52:41 GMT
server:
Plack::Handler::Starlet
vary:
User-Agent
content-type:
text/html; charset=UTF-8
content-length:
1310
access-control-allow-credentials:
true
connection:
close

●case6
https://jbbs.shitaraba.net/bbs/api/setting.cgi/otaku/1322/
403 Forbidden
date:
Sat, 30 May 2020 03:53:56 GMT
server:
Plack::Handler::Starlet
vary:
User-Agent
content-type:
text/html; charset=UTF-8
content-length:
1310
access-control-allow-credentials:
true
connection:
close

●case7
https://jbbs.shitaraba.net/bbs/api/setting.cgi/computer/156/
403 Forbidden
date:
Sat, 30 May 2020 03:54:34 GMT
server:
Plack::Handler::Starlet
vary:
User-Agent
content-type:
text/html; charset=UTF-8
content-length:
1310
access-control-allow-credentials:
true
connection:
close

●case8
(連続アクセスエラーの場合)
403 Forbidden
date:
Sat, 30 May 2020 03:56:03 GMT
server:
Apache
last-modified:
Thu, 06 Dec 2018 15:23:22 GMT
accept-ranges:
bytes
content-length:
1305
access-control-allow-credentials:
true
connection:
close
content-type:
text/html

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

…一応全部,ステータスコードはエラー系です。ただし、エラーコードだけ見ても連続アクセスが原因なのかは判断が付きません。連続アクセスエラーの場合と同じエラーコード403が色々な場合で出ています。連続アクセスエラーの場合だけ抽出するアプローチは失敗と思いきや、ただ一行だけ、区別できる行がありました。それは「content-type」です。連続アクセスエラーの場合だけ「text/html」となっています。それ以外は「text/html; charset=UTF-8」となっています。今後はこれらの違いを判別方法として巡回する、というのを選択肢にできますね。
ちなみに正しくリソースを取得できた場合の値は「content-type:
text/plain; charset=EUC-JP」です。

ちなみに今回使わせていただいたクライアントアプリは[advanced rest client]というものです。便利だからみんなも使ってみると面白いかも。GUIだからやさしい。

というわけで今回の調査はここまでにしたいと思います。
次ブロクを書くときは、2回めの巡回が終わっていたらその結果を。終わってなかったら適当に雑な事かきます。今回も全部文字になってしまった…まあここらへんの話題は画像が意味を持つような事も特にないのでいいかな…。