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/ 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 >>200 神 もしかしてオリジナルの作者さんですか!? >>200 ってどれに当てれば良いのかな? >>185 を当てた上で当てるのかな? ついて行けてない >>204 有難うございます melpaはほとんど使ったことありませんでした トリ配布よりこちらを使うのが最近は流行りなんですかね >>200 のパッチと>>124 のhttps:// →http:// 、bbstableをhttpで指定の三つで、 NTEmacs 24.5上でもNavi2chが復活! XPにもNavi2ch入れたくなるw (NTEmacs 24.5でTLSをうまく動かせなかった) >>204 に>>185 のパッチを当てて読むのはできるようになったのですが 書き込みをしようとすると ERROR: 投稿時の認証用クエリがありません と言われて書き込みできません i.imgur.com/vkLdOe3.png どこをなおせばいいのでしょうか? >>207 >>204 に改良の加わった>>200 のパッチをあてましょう 誰かいるかな? いまスクリプト攻撃を回避するのに絵文字を使おうという方向になってるんだけど Navi2chはSJISしか投稿できないでしょう 投稿のエンコードを行ってるファイルがどれか判る人いる? 山下の旧運営がエンコードでブラウザを弾いてきたときもここで詰まってしまった 2ちゃんねる専用ブラウザが重大?なHTTP/HTMLの規約違反をしているかもしれない https://blog.3qe.us/entry/2013/12/09/031713 >>209 投稿は navi2ch-multibbs.el 内の navi2ch-2ch-send-message その中に (coding-system (navi2ch-board-get-coding-system board)) とかあるから辿ればいいんじゃない? >>210 即レスありがとう ファイル総当りで探してみる 当分誰も来ないと思ってたから驚いたw なんか板一覧が盛大に文字化けして大量の「&#65533;」(実際は半角)が これ多分 Unicode の U+FFFD だと思うんだけど、コーディング誤認識してる? >>209 の件と関係あるんだろうか あと俺環だったらスマソ bbsmenu 読み直したら直ったわ スレ汚しスマソ >>209-210 の件、まだ途中だけど備忘録に ~/.navi2ch/init.el ;; navi2ch-board-get-coding-system @navi2ch-board.el ;; navi2ch-board-coding-system-alist @navi2ch-vars.el (navi2ch-auto-modify (setq navi2ch-board-coding-system-alist '(("livegalileo" . "utf-8")))) とするとコーディングが指定できるらしい BOARD-IDはダブルクオート必須、CODING-SYSTEMは utf-8 だけでなくshift_jisも不可 EmacsはUnicode対応版で設定済みだけれどエラーになる 単に書式の問題かコーディングファイルを書き換える必要があるのかは調査中 CODING-SYSTEM のほうは文字列じゃなくてシンボルを設定するんだよ。 だからダブルクオートで括っちゃダメで、シングルクオートを前置しないといけない。 'shift_jis みたいに。 ごめん、コードちゃんと見てなかった。 そのコードだともう外側でクオートしてるから、シンボルをクオートすると二重になっちゃう。 何も付けずに、単に shift_jis とか書かなきゃいけなかった。 >>216 ありがとう Unicodeを選択するとサマリーが全て文字化けする… そもそも読むだけならUnicodee(絵文字)混交で読み込んでるしなぁ 送信だけ変更するには別の関数を探さないといけないのか 過去ログがなんか取得できなくなってない? Prxy2chでウェブスクレイピングしようとしたら現行スレも取得できない 少し前まで現行スレはダイレクト接続、過去ログはPrxy2chと使い分けてたんだけど ウェブブラウザでは見られるんだよね スタンドアロン版html2dat(.exe)があればどうにかなるのに 「DAT関連の設定」→「個別設定」→ 「差分取得を許可する」 「スレッド途中でDAT落ちなら最終行に追加する」 を許可したら過去ログも読み込めた こりゃまだまだproxy現役だな 特定の板やスレだけ過去ログを取得できない、あるいは取得しづらくなってる http://greta.5ch.net/test/read.cgi/poverty/1697461053 ダメなスレは何度やってもdatが取得できない HTTPヘッダーの環境変数を見て弾いていると思われ https://en.wikipedia.org/wiki/List_of_HTTP_header_fields 回避策としてNavi2chに、本来無用な環境変数を与えてみた これで失敗( not found )したことはない ~/.navi2ch/init.el (defadvice navi2ch-net-send-request (around navi2ch-net-send-request-ad activate) (or (assoc "User-Agent" other-header) ;; cf. https://en.wikipedia.org/wiki/List_of_HTTP_header_fields (add-to-list 'other-header (cons "Accept-Encoding" "gzip, deflate")) (add-to-list 'other-header (cons "Accept-Language" "Accept-Language: en-US")) )) >>215 > いまスクリプト攻撃を回避するのに絵文字を使おうという方向になってるんだけど って、❤😍とか書ければ良い? 絵文字は dat だと文字参照になってるのよね だから普通に文字参照で投稿すればいいだけじゃないのかと socks.elなるものがemacsに同梱されてたので、これを使うように改造中。 >>221 http://greta.5ch.net/test/read.cgi/poverty/1697461053 のdatを取得しようとすると、not foundだ 過去ログって、無課金で取得できるん? VERBOSE GET /poverty/dat/1697461053.dat HTTP/1.1 VERBOSE MIME-Version: 1.0 VERBOSE Host: greta.5ch.net VERBOSE Connection: close VERBOSE User-Agent: Monazilla/1.00 Navi2ch VERBOSE Accept-Language: en-US, ja VERBOSE Accept-Encoding: gzip, deflate INFO HTTP/1.1 404 Not Found VERBOSE GET /poverty/kako/1697/16974/1697461053.dat.gz HTTP/1.1 VERBOSE MIME-Version: 1.0 VERBOSE Host: greta.5ch.net VERBOSE Connection: close VERBOSE User-Agent: Monazilla/1.00 Navi2ch VERBOSE Accept-Language: en-US, ja VERBOSE Accept-Encoding: gzip, deflate INFO HTTP/1.1 404 Not Found パッチキットをpastebinに貼ろうとしたら、オメーのは攻撃的だからパブリックにはできねーとか言われた。んだもんで、paste.fo * >>185 からの変更点 ** >>193 socks使う場合に対応 ** >>194 json-parse-stringがない場合のデフォルトをbbsmenu.htmlにした * >>200 からの変更点 ** socks直接サポート ** ビルドシステムをmesonに変更 meson,ninja,python, texinfoにパスを通しておいてください。 ** 投稿時に、SJISにはない文字を数値文字参照に置換 ** oysterから過去ログ取得 ** 絵文字対応 SJISに無い文字は数値文字参照に置換します ** thumbnail改良(https:やimepicの増強などに対応) ** h抜きは使えません。 * ソースの取得 gitかzipのいずれかで取得 1 gitでclone https://github.com/naota/navi2ch.git 2 zipを取得 https://github.com/naota/navi2ch/archive/refs/heads/master.zip * パッチの適用 展開したソースのトップディレクトリにcdして以下のコマンドでパッチを適用します。 パッチに日本語部分も含まれてるのでコード変換が必要です。 curl -s -L https://paste.fo/raw/6d276a82fc52 | iconv -f utf-8 -t iso-2022-jp |tr -d '\r' |patch -p1 -l * ビルド, インストール meson setup builddir meson compile -C builddir meson install -C builddir トップディレクトリのrel-note.txtにもう少し詳しい変更点があります。 autotools死ね死ね団に入団、h抜き死ね死ね団にも入団と書いたのが不味かったのだろうか 何回か試行錯誤したらアドレスでBANNされた 別のところ(past)はXXXを削除しろとか言われるし .strip() かな? 削除したら動かねーんだよ と言うわけで寛容なpaste.foに貼れた。rawじゃない方は https://paste.fo/6d276a82fc52 meson初めて知った 何が変わったか実感することはないがとりあえず動いてる >>223 参照文字のコードで&#127994;(メタ表記、&と#は本来半角)と投稿すると &amp;#127994; に置換されてしまう どれかのウェブブラウザで投稿できた気もするけど、試してみた範囲で同じ結果だった これは投稿のコーディング選択だけで片付く問題じゃないね パッチが大きくなったので、公開リポジトリを作った * インストール https://repo.or.cz/navi2ch.git cloneして meson setup builddir meson compile -C builddir meson install -C builddir * autoload, infoの設定 .emacs.d/init.elに以下を追加 (load "~/.emacs.d/lisp/navi2ch/navi2ch-autoloads") 使い方(新規機能) * socks 変数navi2ch-socks-serverにsocks5://[user[:password]@]hostname[:1080]の形式で指定 * 画像 画像URLっぽい文字列に上で、「,」でプレビュー プレビューしたサムネイルの上でRETで閲覧(初回は外部/内部ビューアの選択) 内部ビューアを選択するとemacsの中でimage-modeで閲覧。Qで終了。 * 絵文字 CP932で表現できない文字は数値文字参照に置換する。つまり🏺と直に書けば良い。 書き忘れていました navi2ch-net-5chdat-downgrade-to-http *non-nilかつnavi2ch-net-http-proxyがnon-nilの場合5chのdat取得の際は強制的にhttpでデータを取得する。 proxy2chのようなHTML -> dat変換を行うプロキシを使うときに指定します。 あと、昨晩サムネイルのバグを修正してpushしました。 内部ビューアの終了がQだと間違えてqを推した時にバッファが残ってしまうので、qで終了に変更。 read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる