Navi2ch for Emacs (Part 22)
Emacsen で動く 2ch 専用ブラウザ、Navi2ch のスレッドです。
Navi2ch Project Home Page
http://navi2ch.sourceforge.net/
開発版
% cvs -z3 -d:pserver:anonymous@navi2ch.cvs.sourceforge.net:/cvsroot/navi2ch co navi2ch
過去ログ
>> ~/.navi2ch/etc.txt
> navi2ch
> http://navi2ch.sourceforge.net/log/
> navi2ch
前スレ
Navi2ch for Emacs (Part 21)
https://mevius.5ch.net/test/read.cgi/unix/1405127170/ >>101
うまいこといきました
有難うございました 別のスレにも書いたけど
UA だけじゃなく他のリクエストヘッダも見てるっぽいから
板にもよるけど UA 偽装だけじゃ不十分な場合もある Accept: text/html と Accept-Language: ja と oekaki_thread1 あたりが必要みたいだね。
あと Referer もスレの l50 のアドレスとかにしないといけないみたい。
navi2ch-2ch-send-message を書き換えるのが良さそうかな。 proxy2chのサンプルスクリプトもそんな風になってるけど、
ApiKeyのあたりが何のことかわからない。 proxy2ch は知らないけど、API 使ってるなら話が全然違うような
スクレイピングで何とかしようって流れだから どこぞの親切な人のsample.luaを借りてUAだけちょっと変更したらとりあえず書けた。
でもいろいろ制限してるみたいだしこの先もわからんね。 いや、だから>>113で書けたの。
でもまた書けなくなったりくり返してるね。 今のところ以下で書ける
(setq navi2ch-net-user-agent "Monazilla/1.00 (Ciisaa/1.43(A))") その後>>116で書けなくなる
proxy2chを使ったら書ける proxy2chは以下で起動
http://egg.5ch.net/test/read.cgi/software/1649749366/62
navi2chは以下を設定
(setq navi2ch-net-send-message-use-http-proxy t) >>118
proxy2ch 拾ってきてコンパイルして復活できたわ。さんくす
今のところ sample.lua でリクエストヘッダいじる必要はないんだね あ、でも書き込みすると俺環では Emacs 上に
>投稿エラー: HTTP status: 200
>----------------
>send message...failed: HTTP status: 200
って出るわ。書き込みは成功しているけど
何だろこれ…
(navi2chの設定を色々イジりすぎてるせいかもだけど) >>121
proxy2ch からの HTTPレスポンスをキャプチャしたりして原因を調べてましたが、
どうやら proxy2ch を --chunked オプションを付けずに起動すると、
navi2ch がなぜか書きこみ結果の HTTPボディを拾えなくなって? >>120 の症状が出るみたい
おま環、OS依存かもしれないですが…
あと、>>118 の先の proxy2ch オプションですが、-c は要らない気がします
(navi2ch は HTTP CONNECT を喋らないと思うので)
現時点で navi2ch + proxy2ch を動かすための
・navi2ch に当てるパッチ
・proxy2ch 起動オプション
をまとめたほうがいいですよね
2chproxy.pl 今までありがとう~ >>122
navi2ch を設定変更なしで
・*.5ch.net 対応
・proxy2ch で動作
させるためのパッチを置いておきます
変更点:
・*.2ch.net -> *.5ch.net 変更対応
・bbsmenu.html を 5ch.net から取得
・bbsmenu.html に含まれる https:// リンクを http:// に強制書き換え
・navi2ch-net-http-proxy : proxy2ch に接続するために初期値を localhost:9080 に変更
navi2ch と proxy2ch が別マシンで動いている環境では、要設定変更
・navi2ch-net-accept-gzip : 環境によりgzip周りがまともに動かない? ようなので、初期値を無効に変更
・navi2ch-net-enable-http11 : 今どき HTTP/1.1 を喋るほうが望ましいので、初期値を有効に変更
(・navi2ch-net-send-message-use-http-proxy はデフォルトで有効になっている) >>123
patch 1つ目
--- navi2ch-list.el.orig 2021-02-07 02:11:34.000000000 +0900
+++ navi2ch-list.el 2022-05-07 18:24:59.186532000 +0900
@@ -94,7 +94,7 @@
(nil " " navi2ch-list-board-name-face))))
(defconst navi2ch-list-bbstable-default-url
- "http://menu.2ch.net/bbsmenu.html")
+ "http://menu.5ch.net/bbsmenu.html")
;; add hook
(add-hook 'navi2ch-save-status-hook 'navi2ch-list-save-info)
@@ -592,6 +592,9 @@
(when (and (not ignore)
(string-match "href=\\(.+/\\([^/]+\\)/\\)" attr))
(setq url (match-string 1 attr))
+ ;;(when (string-match "^https" url)
+ ;; (setq url (replace-regexp-in-string "^https" "http" url)))
+ (setq url (navi2ch-replace-string "^https:" "http:" url nil))
(setq url (or (cdr (assoc
url
navi2ch-list-moved-board-alist)) >>123
patch 2つ目
--- navi2ch-vars.el.orig 2021-02-07 02:11:33.000000000 +0900
+++ navi2ch-vars.el 2022-05-07 18:31:29.607203000 +0900
@@ -257,3 +257,3 @@
(concat "\\("
- (regexp-opt '(".2ch.net" ".bbspink.com" ".machibbs.com" ".machi.to"))
+ (regexp-opt '(".2ch.net" ".5ch.net" ".bbspink.com" ".machibbs.com" ".machi.to"))
"\\)\\'")
@@ -2010,6 +2010,3 @@
;; net variables
-(defcustom navi2ch-net-http-proxy
- (if (string= (or (getenv "HTTP_PROXY") "") "")
- "127.0.0.1:8080"
- (getenv "HTTP_PROXY"))
+(defcustom navi2ch-net-http-proxy "localhost:9080"
"*HTTP プロキシの URL。"
@@ -2081,3 +2078,3 @@
-(defcustom navi2ch-net-accept-gzip t
+(defcustom navi2ch-net-accept-gzip nil
"*non-nil なら、ファイル受信に GZIP エンコーディングを使う。"
@@ -2096,3 +2093,3 @@
-(defcustom navi2ch-net-enable-http11 nil
+(defcustom navi2ch-net-enable-http11 t
"*non-nil なら、HTTP/1.1 を使用する。" >>123
proxy2ch の起動オプション (現時点では Version 20220501 が最新、sample.luaは不要) :
-s --chunked --api a6kwZ1FHfwlxIKJWCq4XQQnUTqiA1P:ZDzsNQ7PcOOGE2mXo145X6bt39WMz6 --api-server api.5ch.net --api-auth-xua "JaneStyle/4.23" --api-dat-xua "JaneStyle/4.23" -a "Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000"
必要に応じて、以下のオプションを追加
--verbose : 詳細メッセージ
-g : localhost 以外からの接続も受け付ける navi2ch-net-enable-http11を有効にするからgzipでエラーになるんじゃないのか >>127
そうかもしれないけど、HTTP/1.1有効にしないほうがこの先色々と不味くないです? 串が読み書きして
curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
使ってるのに >>129
いやそうじゃなくて、proxy2ch がいつまでもHTTP/1.0を解釈してくれるとは期待できないって話です
そもそも今どき HTTP/1.0 とかもうないでしょ?
他の専ブラ次第かもしれませんが
嫌ならpatch当てなければいいです そこで串の名前を出すあたり何も分かってないだろ
したらばでも1.0で問題無いのに何が今どきなのやら ていうかいまどき Shift_JIS だからなあ 5ch は 文字コードとか1.0とかおーぷん、Nextなども同じだし bbsmenuを他所のカスタムBBSメニューに変更したら普通に動いた また読めるようになった。
このスレだけが頼りだわ。ありがとう。 href= に対応する値が "" で囲まれるようになったのが原因みたい
diff navi2ch-list.el.orig navi2ch-list.el
591c591
< (string-match "href=\\(.+/\\([^/]+\\)/\\)" attr))
---
> (string-match "href=\"?\\(.+/\\([^/]+\\)/\\)" attr)) href= に対応する値が "" で囲まれるようになったのが原因みたい
diff navi2ch-list.el.orig navi2ch-list.el
591c591
< (string-match "href=\\(.+/\\([^/]+\\)/\\)" attr))
---
> (string-match "href=\"?\\(.+/\\([^/]+\\)/\\)" attr)) 2chproxy.pl なしで5chを読むだけならできる ----BEGIN BASE64----(navi2ch-5ch.el.gz)
H4sICCgtf2QCC25hdmkyY2gtNWNoLmVsAKVXbW/bRgz+HGP/oF9umrNJDmTFTrsX
Q5GwFMVarOu+7FuUGLJ9tgXYZ093TruhP34k70UnxU5fltaGxCN5zz3kkXS44MuH
smaifKjG83X8Aj5rtd3EahcvShXXfMU/7ONRj7FwvhPzUrEgXags6J0xFhRFeHsZ
/3J3URRRUcjb+/RuoFdSWMonJVvXfHldBNuy2qjdBPXvi0Drg/XH5U6o2/vsbgAC
4zOdZaA2HOQgShN6gSezlmi3xrIxGjo87iGfIJyL3BmTDFAOUgcrXyu1R0SIIMgJ
SUanSJMSdo7yjmnLL8ngK9UcoP4FGaMhMdLYN09y4PlMS6INtp3xkNgJI7KPNJai
yEmaEmVtUOli4YXhvhCkQ5Io6vXCz4vsuBVZArWoHoBguS8F+GPzTSklcCUO2xmv
garHodcSP/rJY0eZnxgntii33G0AeeARZWRPJ5SfOKWz/ujz7RIu00Ey+noxwdVW
2F3eWTBfeTIgnLfxnXTjH/cJjzNOmUNnd5Q5ejCvZT5Jkhkf6jDN10PBVXKQvE5a
1zbQdNjNdb5lXlx9LjsX4mOaALqMHhBgZt/9K5eCyMHecinLleYCrVUGaexWFcAv
F9NK0HrjRJN2JAKLhSPO5vxBnEz5TSW4ZGGEKb/hasDCcF/zh2nN5VSnN7uMwFf4
6t2vN29fTccvX0//+nMqXr5uy9/88RvK37559zsT1QaXWM0VU5XacDbjK8bFgql/
9pzpW4Y7wp6rHQCZr+FShvtdJVS8rURk1t6vuWBhCXah5GUNyJe7+n1ZL8xFhYOT
+yzALZmiTekP9NXftGu4LRUY4uaXUUvhqMOizguRp8mTftGZ8QtbVEJUYoXeNWyr
pU8ezg7LJa9jeZhJVaOi4aLRrpYsvGZ5CjUHeIjLpQLStcaZc4bEjXpnZwbop3oT
mHqGY3uAz7MeN9jerys8xHG2rDfDEeYPpI+XOaE+Mrq3Ek2boWIUNSEJOdYv87zr
つづく つづき
ao4jFgQOlv0LsTpO16VcH7O5ijqC58aJ3REr0FTyabU4Yv2iozzjI7ftI+UfHymP
Tyv/1FGGTqO4UMeVf24r43X10sI/Qc33m3LObRArYV0EthDht6lsDP5BNuEf+W0c
+VlnkT3le1Zn+AF/gdX/IheIAsu0nSds3au2VBN1S5JUw6kGZ1SMv7+zU4Upxeik
KEYOA/saFOAagUQWy+20jP+9o2/sDYNr7AzQXgaEa0BjmDTtxVv4fHNT0Q34ohgX
xdX/O0JabVcwT8l6fl3oXmP6HhKZJLhaDP1mN1+DANugnRsGZhCVgyQ3zIZw8bc4
DEkp9xPyMjyXpn0Cap1KlMmQiFDMxuxRu4jgRvVcvjFSe35MbdxWUzquVClA+nXc
4B3IW+nfTVbqNY97mb53XxIBZmJwMgjwniS390Mkevizo9+b2dz0od3dPuvf9AdX
Yf+iHz8Lb+4YOpsgKUbD48QjBUtFE7lzmWb6Y5+sNWNNFdU1uCkGToWaFHXilF3i
pCBWag2tbBT50eosjiO76mCwm1eTcxmfywCNSafXBBsqnXs7Eh7ImBFr2kvkB0ef
1gzt9EL9N3L21Megx44uWGfAiU75xPkFXUoWYAiCfvFt2pcQgjT70vcAneHhWHf3
o4j8OHb1m0caByxEOjNu4s0hAkx5LRv5J6bBZg6E62kmwycHR7sXuAUjuhHVTvij
nHsuPzjd3aaSsAMh1m7cKCRgFjfxg0FMY/7mEWy4L/Fhj2kaLyGuiA2ys15JD/6h
3gAzMFeSHMeTJaWAgNQcNUJVbY1w7GkexFwLrxohnI04Cu5p+oabqktmQrc2gaX2
j4hiCKJ+0B5mzUBELZ5ZjwDVMaDBQ8yX1YfutESKNkNnO5jEWHdMaqkcnbmutAqe
6AgkqFbDF7YmBUzj8JKRWG1qSqK4VAn+QBnOV1UCAvhvzZiG6C7WGdH63Q8nMsol
bijwGmN+SOKGUeAoUOhBnw6jM1/U0EJ0gCi5y8VDBXW5hJ9PzTadZGET+IYJO0Y7
TdRJXYQY9f4D/0xnsRASAAA=
----END BASE64---- 書き込みできないのは何で?
5chのAPIって有料なの? 別に API 使わなくても書き込めるよ
現に自分は 2chproxy.pl の他にさらに自作の串挟んで書いてる
確かリクエストヘッダをちょいといじるだけ(自作だけど詳細忘れた)
まあプロバイダと板と時期(選挙期間とか)の組合せによってはダメなこともあるけど てか今は他にもいい串あるみたいだからそれ使えばいけるんじゃない?
正直 Perl スクリプトとかもういじりたくない… >>140
diffに-cも-uもつけないのはなんなんだ
最近多すぎる read.cgiの仕様が変わったんでproxyの対応を待った方が良さそう
2chproxy.plはlinux板のスレでパッチが作られてるし
proxy2chは対応したバージョンに更新されてる >>152
情報ありがとうございます。
復活しました。 そりゃAPIは変わってないんだから読めるだろ
過去ログやread.cgi経由で読む時の話だ
上にもread.cgiと書いてあるだろ ああなるほど
あんまりよく分かっていないもんですから elisp だけで 5ch を読むための navi2ch-5ch.el を書き換えた
必要な変数設定も埋め込んだ
----BEGIN BASE64----(navi2ch-5ch.el.gz)
H4sICJ4gi2QCC25hdmkyY2gtNWNoLmVsAM1YX4/bRBB/vogPsTIctXOyfcm1UE6+
RLSq2opSXpB4iO8ix94kFrETvJtrQX3hHvkUPIKQQOIb8DUQX4JvwMzser32JSlX
XrjrpevZ+fPbmdmZcVzB5TesTK7zYbr0k0rm6Yr7vExm8F+Wz+eszFdez22xrXIh
/dlMSOLaVivmLKXcnIdhwctt8CBdBiWXIXDQ81IWK2enjutklWf+cg3Lii/4602P
0Y+brss0kcyJY9fpHWmiYvHXG8nuuU5txmFOAAoDkdYrTQTzm7z8OkjXBeg4Ii1O
UCTpMoctItfPgVw7nlcbAqteHN9DSs/N+Pw6qQxsMOrjeXy59rOkhu0PehboKJMj
Qo3wJ6f+J5cnpFFMrqLLvtqJYGt8nrBlxecXsVMk+Uquz5H/KnYUP0i/ma9LObka
XfaBoHVGsxGwBf0xkKKQHmCl90KlVks2QoHBYxbjc4RzMjbCRAOU/cjAGmNYEREi
cMaEZESniMIELHvjjmhLL9HgI1I+QP4TEkZB8kgj36xE39IZJeQ2MDvjLnnH9Uje
U1jieEzUiFzWBhVlmRWGq7gkHqLcIbLDVmQJVJZfg4PFJilBH0tXiRDgq3JbzHgF
rrodekWxox/eVjSyE2OPiaTgxgDkgeUoTTucUHbiJEb6je1vk3AjFSTNrzZD3G2F
3eRdDeYdTwYO5218e9XYxz2gccYpc+jsxmXGPZjXYgwFa8YDFSZds7aCV2Hr2jrK
HbVxlW8jK662LzsX4k0UAroRLRDgqH62r1wEJAO74EIkC+ULlJYjSGOzKwF+kk3z
kvYbJcppOyKQZcZxd8j5s1bO66bAIH/h2LUrMy4hxQRbb3hp8G2wki8BonURIrEt
iqT61jyCH1oCeaYib1yufbWPH0Okb0L7Drw9+63wkMsoqVXN0KV0fO7+9dsfv/7+
FVOlxgMTassbd6GpygukAwdsJXadBC2OLZ2/Tvu2+v9foh+8mKbyhjo7jEt4KvN1
J08gwSSHJtW69prTVBOdfCPTjLfl3uxd5SUXzPUwe1dc9pnrbip+Pa24mKrqzE6x
ybtPXn766MWT6fDxs+mXX0zLx8/a9OefP0X6i+cvP1PTD0CpuGQyl3ANZnzBeJkx
dVc8mljcxRowpEu4Wu5mnZfSL/LS03uvlnBD3AREYAJKKgA9X1evkirT1w2OSZpH
Dlpj0swhTE1MaNAtEgmCaPfUazHsVBhX47iEdDuoF5VpvWAiL8u8XKB2r2dzqUO7
つづく つづき
s+18zitfbGHqq5BRu6HhzufMvWDjCCoH+MFP5hL8rTiOamUa39uGKZC4C/8Q+dH8
bm/USiwf2PHa4YG7Aj6znPZqmaO//hUUzFJIUis/XeVd1F9TFD7t9YHXRN/lWOb0
et3lHHrMcQys+sfFwjldJmK5S+bM6xDuayW1RaxmU8GnebZD+kGHecYHxuwt5o9u
MQ/3M3/cYdaVYzfzwzYzFgUroPYJKr5ZJSmvo5iXtQrHLtS6KjL4xbcI/SJhKbLz
pXHvQe3jSTK7RJ1OI2GrqQ94SMmsGuEfKdH8d1JBr0QODthqdq9rc17Q/KEanqA2
Qm2AWvTVh5f1BK/HHlQSxwODgb0LClCNQLway2Sa+N9d0ie2p/4FNifocH3C1afG
K3SHszb+vbienjT4OB7G8dl/O0KUFwt4dxFVehGr1q1bLzoyDHE3Dux+my6BgJ24
nlL6+qVP9MOx9qwL9aPAIUwIga/XoCU4FrqDA2qVkXQhIJ+h/A7Zrd7mwcXsmbRl
xHZ/F9uwzSZVXKngAPXdfEPJ3rpF3WSl7ni78eo6fYcIMB2DvUGA5zCcXAXo6OCh
cb81IZoBSKmb3Pz0w9Obn29+uWT09Qa6Q+9Z3rDcgbWmidmxiEbqr16ZryGsOqGK
eFNNDAt1NJoaInaKA025kEtouwPPjlNnc+jVuwYGe/Tk/Fj4x8JBYeLpNWGGUmme
dgQGcmXAmv7k2WFRp9WvCfRAs4Jn5KkRwjwwOGGdOczbpxPHLFQpmHPz482f309u
/o5Gh1cOCuEhWNfKTst2vLr8zRLUNVDobGjEavMliPJKNPS3DKfNWAoXUA+qB+fY
2haoBSHKeZygrfHSrJPXhneNX6sxMsCUGjOelTDw6zjBcKgwv3cLNtwIf7vBdPTn
ED/EBllYLYQFH7/wc1OYnYiOc8ycQl1CCg4aoswLTRxanNsyVcSzhghnIx85V/Qm
AHdRFcWQ7mUIW+03lTgA0gdOe8DWkxPNAqzWCFCNBxR4iPk8f90dq4ixzsTZGkY2
1p2nWiw7h7MzxYIn2gEJ6hF+ZamqjsMUDisZyatN7QglFzLE1/0gXeQhEOBfLcYU
RHOBjsit79/bk1Emcd0SryvmhyDfMAocBQo1qNNhdNKsgiahAkTJnWTXOVTeJMss
M51kYefwCVO/j3LKUXt5EaLX+wfxp+LSfhYAAA==
----END BASE64---- >>157
いただいたファイルを ~/.emacs.d/elpa/navi2ch-20200130.36/navi2ch-5ch.el に置いて、
emacs-28.2 -q で起動した後
(when (require 'package nil t)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(package-initialize))
(eval-after-load "navi2ch"
(load "navi2ch-5ch"))
を評価して M-x navi2ch しても板一覧が取得できないのですが、何か他に設定が必要でしょうか? >>159
>>140 の変更が必要かな?
他にも*.elファイル中でhttp:決め打ちになってる所をhttps:に変更する必要があるかも Navi2ch完全ふっかああああぁつ!!wwwwwww 書き込みの規制めっちゃ緩くなってるね
いったいどうなってるんだ、いや別に悪いことじゃないんだけど
またすぐ荒らしが来て規制されるのかなあ
スレチスマソ 10年ぶりくらいにnavi2ch使ってみた。書き込めるかな
(setq navi2ch-list-bbstable-url "http://menu.5ch.net/bbsmenu.html") でカテゴリーはとってくるけど板一覧が持ってこれない。
とりあえずスレのURLをChromeで探して直接開いて読んでいるw その1
diff --git a/navi2ch-list.el b/navi2ch-list.el
index 4188735..a2e8cad 100644
--- a/navi2ch-list.el
+++ b/navi2ch-list.el
@@ -567,7 +567,7 @@ changed-list は '((board-id old-board new-board) ...) な alist。
(let ((board-id (cdr (assoc url navi2ch-list-board-id-alist))))
(or board-id
(save-match-data
- (if (string-match "\\`http://.+/\\([^/]+\\)/\\'" url)
+ (if (string-match "\\`https?://.+/\\([^/]+\\)/\\'" url)
(match-string 1 url))))))
(defun navi2ch-list-make-board-txt ()
@@ -590,7 +590,7 @@ changed-list は '((board-id old-board new-board) ...) な alist。
(if (string-match "a" tag)
(let (url board-id id u)
(when (and (not ignore)
- (string-match "href=\\(.+/\\([^/]+\\)/\\)" attr))
+ (string-match "href=\"?\\(.+/\\([^/]+\\)/\\)" attr))
(setq url (match-string 1 attr))
(setq url (or (cdr (assoc
url
@@ -624,7 +624,7 @@ changed-list は '((board-id old-board new-board) ...) な alist。
(defun navi2ch-list-valid-board (uri)
(save-match-data
- (when (string-match "http://\\([^/]+\\)/\\([^/]+\\)/" uri)
+ (when (string-match "https?://\\([^/]+\\)/\\([^/]+\\)/" uri)
(let ((host (match-string 1 uri)))
(and (not (string-match navi2ch-list-invalid-host-regexp host))
(string-match navi2ch-list-valid-host-regexp host)))))) その2
diff --git a/navi2ch-multibbs.el b/navi2ch-multibbs.el
index 8e49f28..d1ef831 100644
--- a/navi2ch-multibbs.el
+++ b/navi2ch-multibbs.el
@@ -345,7 +345,7 @@ START, END, NOFIRST で範囲を指定する"
;;;-----------------------------------------------
-(defsubst navi2ch-2ch-subject-callback ()
+(defsubst navi2ch-2ch-subject-callback (&optional args)
(when navi2ch-board-use-subback-html
(navi2ch-board-make-subject-txt)))
@@ -525,7 +525,7 @@ START, END, NOFIRST で範囲を指定する"
'equal)))
(navi2ch-cache-get
(cons uri file-name)
- (cond ((string-match "http://\\(?:[^@/]+@\\)?\\(.+\\)" uri)
+ (cond ((string-match "https?://\\(?:[^@/]+@\\)?\\(.+\\)" uri)
(navi2ch-expand-file-name
(concat (match-string 1 uri)
file-name))) その3の1
diff --git a/navi2ch-net.el b/navi2ch-net.el
index dc11ec5..972c97f 100644
--- a/navi2ch-net.el
+++ b/navi2ch-net.el
@@ -228,7 +228,8 @@ nil なら常に再接続する。")
host (cdr (assq 'host list))
file (cdr (assq 'file list))
port (cdr (assq 'port list))
- host2ch (cdr (assq 'host2ch list))))
+ host2ch (cdr (assq 'host2ch list))
+ rest (cdr (assq 'rest list))))
(when navi2ch-net-http-proxy
(setq credentials (navi2ch-net-http-basic-credentials
navi2ch-net-http-proxy-userid
@@ -257,11 +258,8 @@ nil なら常に再接続する。")
(setq proc nil)
(unless (navi2ch-net-down-p host)
(condition-case nil
- (if (string-match "^https://" url)
- (setq proc (funcall 'open-tls-stream
- navi2ch-net-connection-name buf host "443"))
- (setq proc (funcall navi2ch-open-network-stream-function
- navi2ch-net-connection-name buf host port)))
+ (setq proc (apply navi2ch-open-network-stream-function
+ navi2ch-net-connection-name buf host port rest))
(error (navi2ch-net-add-down-host host)))))
(when proc
(with-current-buffer buf その3の2
@@ -304,6 +302,10 @@ nil なら常に再接続する。")
(navi2ch-net-cleanup-vars)
(setq navi2ch-net-process proc))))
+(defun navi2ch-net-split-url-scheme-to-rest (scheme)
+ (if (string-prefix-p "https:" scheme)
+ '(:type tls)))
+
(defun navi2ch-net-split-url (url &optional proxy)
(let (host2ch authinfo user pass)
(string-match "https?://\\([^@/]+@\\)?\\([^/]+\\)" url)
@@ -324,16 +326,21 @@ nil なら常に再接続する。")
(cons 'host (match-string 2 proxy))
(cons 'file url)
(cons 'port (string-to-number (match-string 3 proxy)))
- (cons 'host2ch host2ch)))
- (string-match "https?://\\(?:[^@/]+@\\)?\\([^/:]+\\)\\(?::\\([0-9]+\\)\\)?\\(.*\\)" url)
+ (cons 'host2ch host2ch)
+ (cons 'rest (navi2ch-net-split-url-scheme-to-rest (match-string 1 proxy)))))
+ (string-match "\\(https?://\\)\\(?:[^@/]+@\\)?\\([^/:]+\\)\\(?::\\([0-9]+\\)\\)?\\(.*\\)" url)
(list
(cons 'user user)
(cons 'pass pass) - (cons 'host (match-string 1 url))
- (cons 'port (string-to-number (or (match-string 2 url)
- "80")))
- (cons 'file (match-string 3 url))
- (cons 'host2ch host2ch)))))
+ (cons 'host (match-string 2 url))
+ (cons 'port
+ (if (match-string 3 url)
+ (string-to-number (match-string 3 url))
+ (if (string-prefix-p "https:" (match-string 1 url))
+ 443 80)))
+ (cons 'file (match-string 4 url))
+ (cons 'host2ch host2ch)
+ (cons 'rest (navi2ch-net-split-url-scheme-to-rest (match-string 1 url)))))))
(defun navi2ch-net-http-basic-credentials (user pass)
"USER と PASS から Basic 認証の証明書 (?) 部分を返す。"
@@ -999,7 +1006,7 @@ This is taken from RFC 2396.")
"BBS_\\(TITLE_PICTURE\\|FIGUREHEAD\\)=\\(.+\\)" content))
(setq src (match-string 2 content))
(let (url file)
- (setq url (if (string-match "http://" src)
+ (setq url (if (string-match "https?://" src)
src
(navi2ch-board-get-url board src)))
(string-match "/\\([^/]+\\)$" url) なんかタブが潰れたり文字参照になってたりなので、gzip + base64
H4sICC0QsmQAA2RpZmYtMjAyMzA3MTYudHh0ALVYbXPaOBD+DH+hX3Qcc9gHIkBIAum0SdMmbXqd
ppOkNzct1zthC3BjbGKLJp25H3+7K9v4DUKmUyatQdpd7WqffbSy7UwmjPOpo5jY8cQ3p2fNuOuE
qi1dNs6PVB3Plves3x0MDnb32m3RkwNL2Kzb6ez3+1XOedFKtdlsllg6PmZ8b/+gdcCa+gED1kx4
U2mTDHtSP6lfPDFOWMMwxr4IbO7YzHdtTj+YJ+/0N5O1222TxN+iuEBt+PXLr0+qjDHDlYqlLBiW
HTBDhKFvsWXgsrRfPJbiZMSED5oAI37A4rkqqxih+Cb5XCjQs4USVV4BGWfCjFAFjjfVU6w2Gv07
U2pxuLPTbu6MRsbnLzt/N0cjE743ari6WW1u1AyPNumyCtPeaU+0BdalSVM7X2WGLSdLLxvmXNzI
KFZ1D7tj6mwMO5QNevyUbJTHKmpMiWkqHMoY5iZZCP6WKFAx7mbSg/R5kEjPV8yZen4gTUhABbVz
lmeBnDyDvSvsoFljQqnAxP1fr1g72qzLUNUIpbolJOXTsEYKoJTCIE5XosBhmhKx3+tjIvTjpySi
HBbfQCa2A/vvEPiLWKcc6Tzkdk1jPbtdq++IWrDZ3KhPiH/AAkvjxJj5sCvFEnAI/5UVVLKLZQJ3
PB06muKBnMr7BcPvZgLKDcrrVKkA7TJ6nS9d5YzHYZZiU6MRzQ5kfzjpDdptuysng91uOc2m9bJU
m55BXO329xBX+gEDV9cvLq9b7PT9qxZ7f3F2fnl1TXh5/eaic1EPnv716mt9WL8B9NQQMk+fPuWP
+4AWR6CFyzHkKHYL/8HIV2kpbgnXHQvrBjmoua3ob/5COb4nXCaCaahRSniK1XRdLEOJyqjDZ2ru
RlSeFSIqjJcAMtSsSXTYo93Sj8fuVlzUDXm7FG5yjqSWt4Q1k3wqVTwDrOB7ISKXTRxXck/MkdhS
kwDktRV3dPj5yzGUyTHUiaYtYqpVxW20EVfdJisJPccRANShuHjibCJBC1mivCo1H9JnFea6SvFk naota さんのやつにパッチ当てようとしたら結構リジェクトされた…。 curl -s https://pastebin.com/raw/0LMurnzK | tr -d '\r' | patch -p1
でいけたサンクス navi2ch-5ch.elも修正してた
(defun navi2ch-5ch-html-to-dat ()
↓
(defun navi2ch-5ch-html-to-dat (&optional dummy) 誰かパッチまとめて新しいレポジトリたてて(他力本願) 板一覧をjsonで取得する事にした
navi2ch-5ch.elはdatの代わりにhtml取得してdatに変換するもののように思える。
datを直接取得が復活してのでいらなくなったはず(navi2ch-5chを使わないでも読めてる)
https://pastebin.com/d8fh3ghq
>>183
それはめんどい
>>184
サンクス、なおした
パッチに日本語部分も含まれてるのでコード変換が必要
↓でどーぞ
curl https://pastebin.com/raw/d8fh3ghq | iconv -f utf-8 -t iso-2022-jp |tr -d '\r' |patch -p1 Location: を解釈できないので、navi2ch-list-bbstable-url も設定しないといけないっぽい。 defconst navi2ch-list-bbstable-default-url
"https://menu.5ch.net/bbsmenu.json")
になってるから、そっちから読むはずだけど、navi2ch-list-bbstable-urlをカスタマイズしてhttps://menu.5ch.net/bbsmenu.htmlにしてない?
htmlからの読み込みは試してない、これから試してみる どれにどのパッチを当てたらいいのかわからなくなってきた\(^o^)/オワタ >>188
ああっ、よかった仲間がいた
どこをどう弄って動かしてたんだか、記憶から完全に飛んでる >>190
github.com/naota/navi2ch.git
のソースに
>>185のパッチを当てればいいみたい 久しぶりにnavi2chで2ch(5ch)が読めるようになりました。ありがとうございました。 (setq navi2ch-open-network-stream-function 'navi2ch-open-network-stream-via-command)
(setq navi2ch-open-network-stream-command "nc %s %s")
するとうまく動かないのは何でだろうね。本当は ssh -D1080 で socks したいが、socks 外してもうまく動かない…。 Symbol' s function definition is void: json-parse-string json-parse-stringの存在確認も必要なのか…
ちょっとすぐにはパッチ作れ無いのでjson-parse-stringが使えない場合はbbsmenu.htmlを指定してオクレ >>193
proxy使う環境がないので、未検証だった
ssh先でopenssl s_clientやnc -sslとかするのかな
週末までいじる時間取れない スマン >>196
ダイナミックポートフォワーディングだと、いろんな接続先あっても毎回接続し直さなくて済むのよ。
ssh -fN -D1080 どっか
nc -x127.0.0.1:1080 -X5 5ch.net 80
GET / HTTP/1.0
でうまくコネクション切ってくれないのが原因ぽい気がするけど、cloudflare 側の問題かな…。 コネクション切れないのは nc の問題だった…。
https://github.com/larryhou/connect-proxy 入れて、
(setq navi2ch-open-network-stream-function 'navi2ch-open-network-stream-via-command)
(setq navi2ch-open-network-stream-command "connect -R remote -S 127.0.0.1:1080 %s %s")
でもだめで、
(defun navi2ch-net-send-request (url method &optional other-header content)
(message "Now connecting...")
(setq proc nil)
(unless (navi2ch-net-down-p host)
(condition-case nil
(setq proc (apply navi2ch-open-network-stream-function
navi2ch-net-connection-name buf host port rest)) ←このへんでエラーになっているっぽい。
(error (navi2ch-net-add-down-host host)))))
Error: Wrong number of arguments: (lambda (name buffer host service) (let ((command (cond ((stringp navi2ch-open-network-stream-command) (format navi2ch-open-network-stream-command host service)) ((functionp navi2ch-open-network-stream-command) (funcall navi2ch-open-network-stream-command host service))))) (apply #'start-process name buffer (if (stringp command) (list shell-file-name shell-command-switch command) command)))), 6 最近の open-network-stream は TLS 対応なのね。やっとおっしゃっている意味がわかりました…。 ネイティブコンパイラがこけていることに気付いてハマってました。
https://pastebin.com/gWiBJv1i
>>185からの変更点
1 >>193 socks使う場合に対応
2 >>194 json-parse-stringがない場合のデフォルトをbbsmenu.htmlにした
3 バイトコンパイル、ネイティブコンパイルのコンパイルエラーの修正
* このパッチで修正されること
open-network-streamがTLS接続をサポートするようになり、tls-open-streamが利用できなくなっていたので、
httpsを積極的に利用する事にしました。(https:はhttps:のまま取得するように変更しました。
変数navi2ch-net-http-proxyや環境変数HTTP_PROXYでプロキシサーバーを使う方法は利用できません。
外部コマンドを使用してご利用ください。
ネイティブコンパイラのコンパイルエラーを回避するために、相当量の修正が必要でした。
(ネイティブコンパイラがエラー終了すると、ロードのたびにコンパイルしなおしているようだ)
SSL接続して、HTTP/1.0ではプロトコルエラーになるっぽいので、全部HTTP/1.1で接続します。
navi2ch-net-enable-http11はkeep-aliveを使用するフラグに変更になりました。(これを指定するとうまく動作しませんでした)
* 外部コマンドでの利用
navi2ch-open-network-stream-via-commandがコマンドを生成する際に、http:からダウンロードする場合は3番目の引数としてnilが渡されます。
socks4+ncatでの利用例(かなり強引) ncatはnmapの付属品です。
(setq navi2ch-open-network-stream-command
"unset ssl sslsw; host=\"%s\";port=\"%s\";ssl=\"%s\"; if [ ${ssl:-nil} != nil ]; then sslsw=\"--ssl\";fi; ncat --proxy localhost:1080 --proxy-type socks4 $sslsw $host $port")
(setq navi2ch-open-network-stream-function
#'navi2ch-open-network-stream-via-command)
この設定でスレの表示、書き込み、イメージの表情は軽くテストしました。
↓でどーぞ。patchの-lをつけないとリジェクトされます。
curl https://pastebin.com/raw/gWiBJv1i | iconv -f utf-8 -t iso-2022-jp |tr -d '\r' |patch -p1 -l