「Not Found」を含む日記 RSS

はてなキーワード: Not Foundとは

2026-02-04

増田は恐ろしいところ

ついたトラバを見にいこうとすると消えてるし

性器俗称ばかり書いてあるし

後で読もうとしてブクマすると「Not Found」だし

なんか自分id書いてるやついるし

安穏としたこと書くとAIとか言われるし

排泄や自慰の報告するやつが複数いるし

平日はどの日もすいすいすいようび~だし




字下げや京都ゴミ大学いたころの方がまだましだと思う

2026-02-02

anond:20260202145227

一回消されたから分かるが来るよ

あと運営に直接消された増田ブクマエントリごと消えてNOT FOUNDになる

2026-01-30

[]X魚拓スパムの覚書

2026-01-09

昨日からはてなブックマークに通知が来るんだが

ヤングエースUP」って漫画サイトがあるんだけど最近仕様変更した関係カドコミに移行したのよね

で多分これが問題なんだろうね

ヤングエースUPの過去はてブページってもうないのよね

なのに昨日からはてなブックマークに謎の「あなたが1番目にブックマークした「作品一覧」ヤングエースUP記事が注目されてる」として30ブクマ、100ブクマ毎に通知が来まくってて

確認したら去年のブックマークないしブコメが集中してて今頃30ブクマになったとか100ブクマになったとかじゃないものまで唐突にその表示で通知が来るようになった

そもそもカドコミを直接ブクマしてもタイトル画面がURLのまま(初ブクマ時はタイトル漫画タイトル登録されるのに時間経過でURL表示になったりそのURLからアクセスしてもNot Foundになったりする)ではてなブックマーク自体カドコミに対応してないのが丸わかりな中でこんな嫌がらせみたいな通知が今頃になって頻繁に来るのは本当に迷惑なので早く治して欲しい

そしてどうせならカドコミを直接ブクマ出来るようにして欲しいよね

最近別の漫画サイトのファイアクロスも直接ブクマ出来なくなってるし早急な仕様変更が求められてると思うんだよね

はてなブックマークが長らく仕様変更等に対応出来てないんじゃないか

そして治す気もないならマジで不便だよ。シェアしたいのに運営方針でさせて貰えない事ほどつらい事はないよ

2025-12-09

はてなブックマーク増田一覧向けNGフィルタ

はてなブックマーク増田一覧の、さらに「すべて」(1 user)をチェックしている希有な人向けのユーザースクリプトを公開します。

https://b.hatena.ne.jp/site/anond.hatelabo.jp/?sort=eid

// ==UserScript==
// @name        Hatena Bookmark Anond Filter
// @namespace   https://b.hatena.ne.jp/site/anond.hatelabo.jp/
// @description はてなブックマークの『はてな匿名ダイアリー』の記事のうち、指定したNGワードが含まれ投稿非表示します。
// @match       https://b.hatena.ne.jp/site/anond.hatelabo.jp/*
// @grant       none
// @version     2.0.2026.02.27.0021
// ==/UserScript==

(function(){
  const SCRIPTID = 'HatenaBookmarkAnondFilter';
  console.time(SCRIPTID);
  const CLASSNAME = 'filtered';/*フィルタ該当要素*/
  const CHECKED = 'checked';/*二重チェック回避フラグ*/
  const ONCE = 1, AP = 2, INTERVAL = 3;/*適用タイミング*/
  const NGWORDS = {/* 合計100ポイント非表示判定(ただし1つの記事内で同じワード複数使われても1度しか加算しない) */
    '100': [/*即NG確定ワード*/
      'dorawii',
      'あおやまちゃん', 'アオヤマチャン', 'ボスマン',
      '電気通信大学たいてい', 'なんぴょん', 'れめくん', 'れめきゅん', 'えめくん', 'るまさん', '眠りの民', 'リュックサック野郎', 'boushi_inst', 'hakaikami', 'Rekyu', 'iloveootaku_2', 'osaka-sirokichi',/*電気通信大学たいてい鉄道研究会れめくん(頻出)*/
      /*A-G*/'a9w8ru6fqyxqfv9', 'admirail_togo', 'akibakko6348', 'alf1974al', 'amatukiseiru', 'anapgoeson', 'aoi_mizuho', 'asapgoeson', 'asupgoeson', 'b6jbpsji91ieigt', 'bmi22yo', 'boushi_instrail', 'boushi_ob', 'buscholarx', 'bw0531', 'chihiro_love415', 'circlecavok', 'disney1007cla', 'dora22sibuya', 'donkotrain', 'ecotosk', 'electlone', 'factomodachi', 'fft_dareka', 'gmhtcyznf_abc', 'goesonanap', 'gyudon_honmono',
      /*H-N*/'h13_yokohama', 'h2twi', 'H2TWR', 'hamaishogo1111', 'haru_mofumoffu', 'hermitv8', 'hirabiscus', 'hinolovelove', 'hnmk0127_03', 'inaken17_', 'inte235dy', 'ixtabes', 'jamcombatge', 'kawachiasukanew', 'kaoru_ai1991', 'keio9730F', 'kiha2228', 'koreanlabsfc', 'koyounoyooko', 'kqlex1500', 'kunugiyamaosake', 'kurakamasan', 'kurotamaxxx', 'kt_ruma_1372', 'kt_up_date', 'lightningreen77', 'luckyyusha', 'mamadoll_kun', 'matya_uec', 'michee_n', 'minamihinawot', 'miniminicot', 'minori0151', 'mizunyanpanda', 'monkichi_22', 'mugen_08i', 'mukoroku651', 'nakano6409', 'nanpyong', 'new_oer', 'nimouec', 'NoName_thUFO', 'norannnde',
      /*O-U*/'oreizmmiporin', 'orenotanoshimi', 'osaka_sirokichi', 'papepoco', 'pasotokon', 'pm95uq', 'portrail', 'reme_kun', 'ruin_2002', 'rx00shiratama03', 's03_amurtk2731', 'sacchan03110319', 'sacchanenjoy', 'seisu_bot', 'senanana_cos', 'shinano_115', 'shineleaf1372', 'Shirasagi494', 'shop_bullet', 'shurimpy', 'soroisoroi', 'sui_pm95uq', 'sweidan821858', 'taiyaki_level2', 'takao_straight5', 'taking0000', 'tarotaromusic1', 'tc201_501', 'thomas_returnee', 'tocarbarn', 'tokusatsu_fan_0', 'toshikimiyazaki', 'train_magician', 'tx9y2cpwdz27255', 'u2fap5u4zw57811', 'uec15take', 'uecdaisuki', 'UECert', 'uecrail',
      /*V-Z_0-9*/'vampire_mio', 'vbdmnwefknmxsdm', 'vp20th', 'wafue', 'wakasato_', 'walkingniwatori', 'wataameexpress', 'ya4975349616894', 'yayoiulc', 'ymbk_arisa', 'yms_uec16', 'yuuya_1104_uec', '__________ob', '_chocorail_', '_doitforthewin_', '_toeshin', '_unigmo', '100mph_no_yuuki', '16887y', '169_D51_protect', '205musashino', '2969364x', '2rtkvn34il2783', '36kyo', '86lilxw1',
      'テクウヨ', '自己放尿',
      ' ーーーーーーーー', 'https://anond.hatelabo.jp/20260107144223',/*AI問答貼り付け増田*/
      '†噛み締めて行こうな†',
      '困難女性(コンジョ)', '困難女性(コンジョ)', 'コンジョ自警団',
      'raiselysite.com',/*英文スパム*/
    ],
    '90': [/*ほぼNG*/
      'megalodon.jp',
      '鉄道研究会',
      '鉄研',
      '通勤特快',
      '不正乗車',
      'こども料金',
      '性慾',
      '穢い',
      'エッタ',
      'オソソ',
      'キセル',
      'uec',
    ],
    '10': [/*NG*/
      '電気通信大学',
      '電通大',
      '駿河台大学',
      '大学院',
      '学生課',
      '教務課',
      '朝鮮語',
      '北朝鮮',
      '統合失調症',
    ],
  };
  const sites = {
    'prefix': [
      ['selector', '(modifier)', '(css)', '(REPEAT)'],
    ],
    'https://b.hatena.ne.jp/site/anond.hatelabo.jp/': [
      ['section.entrylist-unit li.js-keyboard-selectable-item', li => {li.querySelector('li.entrylist-contents-category > a').textContent = li.dataset.matches}, `.${CLASSNAME}{display: none;}`, AP],
    ],
  };
  const rules = sites[Object.keys(sites).find(prefix => location.href.startsWith(prefix))];
  if(rules === undefined) return console.log(SCRIPTID, 'Not found any sites.');
  const scores = Object.keys(NGWORDS).map(Number).reverse();/*数値インデックス順に取り出されたkeysを逆順にして100から並べ直す*/
  const filter = function(selector, modifier){/*各要素に対してNGワード判定して、該当したら追加でmodifierも適用する*/
    document.querySelectorAll(selector).forEach(e => {
      if(e.dataset[CHECKED]) return;
      e.dataset[CHECKED] = 'true';
      const text = e.textContent.toLowerCase();
      let total = 0, matches = [];
      for(const score of scores){
        for(const word of NGWORDS[String(score)]){
          if(text.includes(word.toLowerCase())){
            total += score;
            matches.push(word);
            if(total >= 100){
              e.classList.add(CLASSNAME);
              e.dataset.matches = matches.join(', ');
              if(modifier) modifier(e);
              return;
            }
          }
        }
      }
    });
  };
  /* ONCE(一括適用) */
  rules.forEach(rule => {
    const [selector, modifier, css] = rule;
    console.log(SCRIPTID, 'ONCE:', selector);
    filter(selector, modifier);
    if(css){
      const style = document.createElement('style');
      style.dataset.script = SCRIPTID;
      style.type = 'text/css';
      style.textContent = css;
      document.head.appendChild(style);
    }
  });
  /* AP(AutoPagerize) */
  rules.filter(rule => rule[3] === AP).forEach(rule => {
    const [selector, modifier] = rule;
    document.addEventListener('GM_AutoPagerizeNextPageLoaded', e => {
      console.log(SCRIPTID, 'AP:', selector);
      filter(selector, modifier);
    });
  });
  /* INTERVAL */
  rules.filter(rule => rule[3] === INTERVAL).forEach(rule => {
    const [selector, modifier] = rule;
    setInterval(function(){
      console.log(SCRIPTID, 'INTERVAL:', selector);
      filter(selector, modifier);
    }, 1000);
  });
  console.timeEnd(SCRIPTID);
})();
/* Hatena Bookmark Anond Filter */
.filtered{
  display: block !important;/*上書き*/
  opacity: .25 !important;
}
.filtered:hover{
  opacity: .75 !important;
}
.filtered li.entrylist-contents-category{
  background: red !important;
  font-weight: bold;
}

検索用: はてなブックマーク はてブ はてな匿名ダイアリー 増田 スパム キーワード NGワード フィルタミュー非表示 削除 隠す ブロック ユーザースクリプト ユーザースタイル hatena bookmark anond spam keywords ngwords filter mute hide hidden display none block userscript JavaScript js css style

2025-11-01

投稿記事リンク記事ブクマしていたが後に削除されたアカウント
2025年05月27日ウクライナ戦争に参加した日本人義勇兵達の絶望の未来 - 76usersmgdothe
2025年05月30日ここ6~7年前から反社属性のオタク界隈関係者増えすぎじゃね? - 31usersmgdothe
2025年06月26日すまん、AIって全然使えなくね? - 547usersmgdothe parisbird
2025年06月30日すまん、AIってやっぱ有料でも使えんし格差拡大するだけじゃね?危険じゃね? - 53usersparisbird
2025年07月02日AIが技術的に根本から全く使えない3つの理由 - 58usersparisbird
2025年07月16日SNS界隈やエンタメ界隈ってもはや低強度紛争状態だよな - 5usersmgdothe parisbird
2025年08月25日政治にお熱な事は大いに結構だが、オタク界隈に関わるんじゃねえ - 2usersmgdothe parisbird
2025年08月28日ネット辞めたほうがQOL爆上がりすると気づいた、もう楽になろうぜ - 395usersmgdothe parisbird
2025年09月03日ウクライナに消えたぼくのフレンド - 154usersmgdothe parisbird
2025年09月04日ある日本人義勇兵の死~敗北者たちの黄昏~ - 11usersmgdothe parisbird
2025年09月07日IT企業経営者の兄が首を吊って自殺した - 341usersmgdothe parisbird cvtte56
2025年09月11子供がいじめを受けた、家庭のすべてが崩壊した - 6usersmgdothe parisbird cvtte56 akuaku-88
2025年09月11親族(15)がまさかの補導でパ〇活やってたことが判明【追記】 - 30usersmgdothe parisbird cvtte56 akuaku-88
2025年09月16日友人のIT企業社長が逮捕されてから人生終了するまでの話 - 54usersmgdothe parisbird GUNIT-011
2025年09月18日疑問なんだがITエンジニアってDV癖のあるやつ多いの?【補記】 - 219usersmgdothe parisbird GUNIT-011
2025年09月19日妹夫婦が性交渉の不一致で離婚することになった(ま~たIT系かい…) - 269usersmgdothe parisbird GUNIT-011 dorohedorone
2025年09月22日発狂されそうだけど、純粋に人間としてつまらんのよ増田は - 260usersmgdothe parisbird GUNIT-011 dorohedorone
2025年09月22日妹夫婦が性交渉の不一致で離婚危機だったが落し所が見つかった - 12usersmgdothe parisbird GUNIT-011 dorohedorone
2025年09月27日20代末から40歳まで11~2年しかないのに何で気が付かなかったの? - 347usersmgdothe parisbird GUNIT-011 dorohedorone
2025年09月29日婚活での虚しい嘘成功例、ハッキリ言って憐れである - 196usersmgdothe parisbird GUNIT-011 dorohedorone
2025年09月30日すまん、非モテ中年達はテロリストにでもなりたいの? - 115usersmgdothe parisbird GUNIT-011 dorohedorone
2025年09月30日いや、マジであんだけイキってて20歳末~40歳までお前ら何してたの? - 8usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月01日太字長文説教増田、ガチで予言者だろコイツ - 36usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月01日ぶっちゃけ日本のIT技術者のレベルが元々低いだけだよね① - 501usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月04日海外でITエンジニアをしていた時に予言された事通りに業界がなってる - 538usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月06日追記:2025年-俺達が信じたITの夢の果てにて - 52usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月07日割とマジで発達障害がITに向いてるって誰が言いだしたんだ? - 131usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月09日一生食えるスキルがない?何でITエンジニアになんかなったの? - 69usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月13日ネット民が恋愛できないのってぶっちゃけ日本の国策なんだが - 66usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月15日お前らの雲より高い恋愛願望叶える方法って真面目にテロしかなくね? - 119usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月17日増田が大好きななろう系が衰退してる理由 - 79usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月18日なろう系(カクヨムだの亜種含む)の層の人たちってこんなのだから - 44usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月18日正直ああいう人たちは恋愛脳じゃなくて「家族コンプレックス」だよね - 121usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月20日「日本のITは国に潰された!」👈そりゃ潰されるだろこんな業界 - 21usersmgdothe parisbird GUNIT-011 dorohedorone
2025年10月30日アラフォー元特殊作戦群、ハッキリ言って人生終わっている - 241userssft98 shotshow megapic gjchang PJ-F16 pmpan67
2025年10月31日やっぱり俺ら陸自の特戦群は日本人のオモチャ扱いか、人権ないんか - 168usersquiet001 burn-burnag1 bva-wwx gjchang PJ-F16 pmpan67
2025年12月23日国際勝共連合のテロリストだった父との思い出 - 524usersjack-o89 jaxfg4
2025年12月24日父の活動について追記:質問と回答① - 4usersjack-o89 jaxfg4
2025年12月25日国際勝共連合のテロリストだった父の「秘密戦争」① - 16usersjack-o89 jaxfg4 nanonanosts dorochangku hondeman egkun
2026年01月04日1980年代でアメリカ傭兵スクールに行った話 - 7usersdainabookskun necnectua egkun
2026年01月10日ネット商売して目立ってる人たちって「ヤクザ化」していく不思議 - 6usersdainabookskun necnectua gopic egkun
2026年01月11アメリカでITエンジニアからテロリストになった兄の話 - 420usersdainabookskun necnectua gopic
2026年01月11アメリカでITエンジニアからテロリストになった兄の話 追記 - 153usersgopic
2026年01月11アメリカでITエンジニアからテロリストになった兄の話 追記2 - 143usersgopic
2026年01月22日元ITエンジニアの兄がまたテロリストになってしまった - 5usersdainabookskun necnectua gopic

2025-09-02

増田豆知識

ブクマされた増田概要Not Foundになるのは「そのエントリ投稿けが削除された時」

同一人物記事が一斉に消えて、しかNot Foundにならないのは「アカウントが削除された時」

2025-07-18

今見るとhttps://anond.hatelabo.jp/20250717115805が消えてるんだけど(自作ゲーム宣伝する増田)

増田を消しただけだとブクマページに残ると思うんだけど、そっちがNot Foundになってるのってどういうことなの?

2025-06-25

anond:20250624172640

Not Foundにこういうことするとお前も消されるぞ

2025-06-24

anond.hatelabo.jp/20250624000759

ブクマページでNot foundになっていたのでなんだっけ?とグーグル検索したところ判明した回

2025-06-13

我が名はサイボーグdorawii

パーマリンク署名対象にするより堅牢自動化を作れた。

一度投稿したうえで別タブを開いてプログラム的(fetch)に送信してその別タブが閉じられる仕組み。

改めてスクリプト配布しちゃる

最初投稿してエントリページに移動した親タブ側のjsコード
// ==UserScript==
      // @name         PGP署名検出と別タブ自動編集
      // @namespace    http://tampermonkey.net/
      // @version      1.0
      // @description  PGP署名がない投稿自動編集ページへ誘導
      // @match        https://anond.hatelabo.jp/*
      // @grant        GM_setValue
      // @grant        GM_getValue
      // @grant        GM.openInTab
      // ==/UserScript==

      (function () {
        'use strict';

        const body = document.getElementById('entry-page');
        if (!body) return;

        const titleText = document.title;
        if (!titleText.includes('dorawii')) return;

        const pgpRegex = /BEGIN.*PGP(?: SIGNED MESSAGE| SIGNATURE)?/;
        const preElements = document.querySelectorAll('div.body pre');
        let hasPgpSignature = false;

        for (const pre of preElements) {
          if (pgpRegex.test(pre.textContent)) {
            hasPgpSignature = true;
            break;
          }
        }

        if (hasPgpSignature) return;

        const editLink = document.querySelector('a.edit');
        const childTab = GM.openInTab(editLink.href, { active: false, insert: true, setParent: true });

      })();
親タブから開かれる編集ページの子タブのjsコード
 // ==UserScript==
      // @name         編集ページ処理と自動送信・閉じ
      // @namespace    http://tampermonkey.net/
      // @version      1.0
      // @description  編集ページで署名処理と送信、タブ自動閉じ
      // @match        https://anond.hatelabo.jp/dorawii_31/edit?id=*
      // @grant        GM_getValue
      // @grant        GM_xmlhttpRequest
      // @grant        GM_setClipboard
      // @grant        GM_notification
      // @connect      localhost
      // ==/UserScript==

      (async function () {
        'use strict';

        const shouldRun = await GM_getValue('open-tab-for-edit', '0');

        const textareaId = 'text-body';
        const textarea = document.getElementById(textareaId);

        if (!textarea) return;

        const content = textarea.value;

        const pgpSignatureRegex = /-----BEGIN PGP SIGNED MESSAGE-----[\s\S]+?-----BEGIN PGP SIGNATURE-----[\s\S]+?-----END PGP SIGNATURE-----/;
        if (pgpSignatureRegex.test(content)) {
          console.log('[PGPスクリプト] 署名が検出されたためそのまま送信します');
          return;
        }

        const httpRequest = (url, data) => {
          return new Promise((resolve, reject) => {
            GM_xmlhttpRequest({
              method: 'POST',
              url: url,
              headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
              data: `value=${encodeURIComponent(data)}`,
              onload: function (response) {
                resolve(response.responseText);
              },
              onerror: function (error) {
                reject(error);
              }
            });
          });
        };


        // textarea の値を取得
        // 1. 現在のページのURLからURLオブジェクト作成
        const currentUrl = new URL(window.location.href);

        // 2. ベースとなる部分 (例: "https://anond.hatelabo.jp") を取得
        const origin = currentUrl.origin;

        // 3. 'id' パラメータの値 (例: "20250610184705") を取得
        const idValue = currentUrl.searchParams.get('id');

        // 4. ベース部分とIDを結合して、目的URL文字列を生成
        //    idValueが取得できた場合のみ実行する
        let newUrl = null;
        if (idValue) {
          newUrl = `${origin}/${idValue}`;
        }

        // 5. 生成されたURL変数に代入し、コンソールに出力して確認
        console.log(newUrl);
        const valueToSend = newUrl;

        try {
          const signatureText = await httpRequest('http://localhost:12345/run-batch', valueToSend);
          console.log('バッチ応答:', signatureText);
          if (!signatureText.includes('BEGIN PGP SIGNED MESSAGE')) {
            alert('PGP署名クリップボードに見つかりませんでした。');
            return;
          }

          const newText = content.replace(/\s*$/, '') + '\n' + signatureText + '\n';
          textarea.value = newText;

          console.log('[PGPスクリプト] 署名を貼り付けました。送信を再開します。');


          const form = document.forms.edit;

          const newForm = form.cloneNode(true);
          form.replaceWith(newForm);

          newForm.addEventListener('submit', async (e) => {
            e.preventDefault(); // HTML標準のsubmitをキャンセル
            const bodyText = textarea?.value || '';

            // reCAPTCHA トークンの取得
            const recaptchaToken = await new Promise((resolve) => {
              grecaptcha.enterprise.ready(() => {
                grecaptcha.enterprise.execute('hoge', { action: 'EDIT' })
                  .then(resolve);
              });
            });

            // POSTするデータの構築
            const formData = new FormData(newForm);
            formData.set('body', bodyText);
            formData.set('recaptcha_token', recaptchaToken);
            formData.set('edit', '1');
            try {
              const response = await fetch(newForm.action, {
                method: 'POST',
                body: formData,
                credentials: 'same-origin'
              });


              if (response.ok) {
                console.log('送信成功');
                window.close();


              } else {
                console.error('送信失敗', response.status);
              }
            } catch (err) {
              console.error('送信中にエラーが発生', err);
            }

          });

          // プログラム的に送信トリガー
          newForm.dispatchEvent(new Event('submit', { bubbles: true }));

        } catch (e) {
          console.error('バッチ呼び出し失敗:', e);
        }

      })();
node.jsで動かすローカルサーバーコード
const http = require('http');
const { exec } = require('child_process');
const querystring = require('querystring');

const server = http.createServer((req, res) => {
  if (req.method === 'GET' && req.url === '/ping') {
    res.writeHead(200);
    res.end('pong');
  } else if (req.method === 'POST' && req.url === '/run-batch') {
    let body = '';

    req.on('data', chunk => {
      body += chunk.toString();
    });

    req.on('end', () => {
      const parsed = querystring.parse(body);
      const value = parsed.value || 'default';

      // 値を引数としてバッチに渡す
      exec(`C:\\Users\\hoge\\Desktop\\makesign.bat "${value}"`, { encoding: 'utf8' }, (err, stdout, stderr) => {
        if (err) {
          res.writeHead(500);
          res.end('Error executing batch: ' + stderr);
        } else {
          res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
          res.end(stdout.trim());
        }
      });
    });

  } else {
    res.writeHead(404);
    res.end('Not found');
  }
});

server.listen(12345, () => {
  console.log('Batch server running at http://localhost:12345/');
});
@echo off
setlocal enabledelayedexpansion


:: 署名するファイルset "infile=%~1"
set outfile=%TEMP%\pgp_output.asc

:: 以前の出力があれば削除
if exist "%outfile%" del "%outfile%"


:signloop
:: AutoHotkeyパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)
start "" /b "C:\Users\hoge\Documents\AutoHotkey\autopass.ahk"

:: PGPクリア署名作成
echo %infile% | gpg --yes --clearsign --output "%outfile%"


:: 署名成功していればループを抜ける
if exist "%outfile%" (

    goto postprocess
) else (

    timeout /t 1 > nul
    goto signloop
)
:postprocess

powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content '%outfile%' -Raw; Write-Output ($header + \"`r`n\" + $body + $footer)"

powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content 'signed.asc' -Raw; Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"

endlocal
exit /b
AutoHotkey(以前と同じ)
#Persistent
#SingleInstance ignore
SetTitleMatchMode, 2
WinWaitActive, pinentry
SendInput password
Sleep 100
SendInput {Enter}
ExitApp

動けばいいという考えで作っているので余分なコードも含んでいるかもしれない。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250613185036 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEv1FQAKCRBwMdsubs4+
SHHkAQDUOLgBcdji2T6MJ7h/vlMdFfGlWAzNdXijjE1gIuEPywEAiMNMZqhrMmtl
c7UqRuggNJ/UTa5xTIcKp622+7jJQQg=
=Lgkl
-----END PGP SIGNATURE-----

2025-06-09

dorawii

ようやく(ほぼ)すべてが自動化された。

あとはローカルサーバーの起動をスタートアップに設定する(方法AIに聞いて指示に従う)だけの消化試合

ここにほとんどAI頼りのコードを公開しておく。

事前にインストールしておくもの

autohotkey

nodejs

ユーザースクリプトを実行できる拡張機能

パスとかの注意

署名要求してくるパスワードを自動入力するahkファイルドキュメントAutoHotkey配下に置いた。

バッチファイル(make.sign.bat)はデスクトップに置いた。

以下コード

autopass.ahk
#Persistent
#SingleInstance ignore
SetTitleMatchMode, 2
WinWaitActive, pinentry
SendInput お前のパスワード
Sleep 100
SendInput {Enter}
ExitApp
run-bacth-server.js
// run-batch-server.js
const http = require('http');
const { exec } = require('child_process');

const server = http.createServer((req, res) => {
  if (req.url === '/ping') {
    res.writeHead(200);
    res.end('pong');
  } else if (req.url === '/run-batch') {
    exec('C:\\Users\\you\\Desktop\\makesign.bat', (err) => {
      res.writeHead(200);
      res.end(err ? 'Error' : 'OK');
    })
    ;
  } else {
    res.writeHead(404);
    res.end('Not found');
  }
});

server.listen(12345, () => {
  console.log('Batch server running at http://localhost:12345/');
});
makesign.bat
@echo off
setlocal enabledelayedexpansion

:: ミリ秒単位UTC時刻を取得
for /f %%a in ('powershell -nologo -command "[int64]::Parse((Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmssfff'))"') do set timestamp=%%a

:: 署名するファイルset infile=%TEMP%\pgp_input.txt
set outfile=%TEMP%\pgp_output.asc

:: 以前の出力があれば削除
if exist "%outfile%" del "%outfile%"

:: タイムスタンプを原文として保存
echo %timestamp% > "%infile%"

:signloop
:: AutoHotkeyパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)
start "" /b "C:\Users\infini\Documents\AutoHotkey\autopass.ahk"

:: PGPクリア署名作成
gpg --yes --clearsign --output "%outfile%" "%infile%"


:: 署名成功していればループを抜ける
if exist "%outfile%" (
    echo [INFO] 署名成功
    goto postprocess
) else (
    echo [WARN] 署名失敗、再試行します…
    timeout /t 1 > nul
    goto signloop
)
:postprocess

:: PowerShellで余計な改行なしに |< をつけてクリップボードコピー
powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content '%outfile%' -Raw; Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"

echo Done. signed.asc created and clipboard updated (no extra blank line).
endlocal
exit /b
tempermonkeyとかに登録するユーザースクリプト
// ==UserScript==
// @name         PGP署名自動付加スクリプト(GM_xmlhttpRequest版)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  投稿前にPGP署名を付けてから送信(fetch未使用)
// @match        https://anond.hatelabo.jp/dorawii_31/edit*
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @grant        GM_notification
// / @connect      localhost
// ==/UserScript==

(function () {
  'use strict';

  const submitId = 'submit-button';
  const textareaId = 'text-body';
  const localServer = 'http://localhost:12345/run-batch';

  const pgpSignatureRegex = /-----BEGIN PGP SIGNED MESSAGE-----[\s\S]+?-----BEGIN PGP SIGNATURE-----[\s\S]+?-----END PGP SIGNATURE-----/;

  const httpRequest = (url) => {
    return new Promise((resolve, reject) => {
      GM_xmlhttpRequest({
        method: 'GET',
        url: url,
        onload: function (response) {
          resolve(response.responseText);
        },
        onerror: function (error) {
          reject(error);
        }
      });
    });
  };

  const interceptClick = () => {
    const btn = document.getElementById(submitId);
    if (!btn || btn.dataset.pgpIntercepted === 'true') return;
    btn.dataset.pgpIntercepted = 'true';

    btn.addEventListener('click', async function (e) {
      const textarea = document.getElementById(textareaId);
      if (!textarea) return;

      const content = textarea.value;

      if (pgpSignatureRegex.test(content)) {
        console.log('[PGPスクリプト] 署名が検出されたためそのまま送信します');
        return;
      }

      e.preventDefault();
      e.stopImmediatePropagation();
      console.log('[PGPスクリプト] 署名が見つからないため処理を停止し、署名を取得します');

      try {
        await httpRequest(localServer); // バッチ実行

        const signatureText = await navigator.clipboard.readText();
        if (!signatureText.includes('BEGIN PGP SIGNED MESSAGE')) {
          alert('PGP署名クリップボードに見つかりませんでした。');
          return;
        }

        const newText = content.replace(/\s*$/, '') + '\n' + signatureText + '\n';
        textarea.value = newText;

        console.log('[PGPスクリプト] 署名を貼り付けました。送信を再開します。');
        btn.click(); // イベント再発火

      } catch (err) {
        alert('PGP署名の取得または貼り付けに失敗しました。\n' + err);
      }
    }, true);
  };

  window.addEventListener('load', () => {
    setTimeout(interceptClick, 1000);
  });
})();

プロミスメソッドとか全然まだ理解してなくてそのなかに関数代入したその関数オブジェクトプロパティresponseを?いやまあそのあたりのコードが示すデータの流れが全然理解できないような人間でもここまでできちゃった。

AIすごいなと思うよ。そして思うのは今後重要になってくるのは文法とか自体に詳しいことじゃなくて、そのプログラムの処理内容を指示できるシステムエンジニア的な言語化能力のほうじゃないかなと思った。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

20250609111559680 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEbCbwAKCRBwMdsubs4+
SLueAPwOv7PBk4voAe5qlcCEvs/PJhmKc5QAb/1R43JMQFuDZgD/UTPEKsL/PhK9
jFGv2HDXK1dVjLNwvosgX9uYJh5xxwY=
=qiOE
-----END PGP SIGNATURE-----

2025-05-03

anond:20250503070028

asumi2021 試しに一つハテブで確認したけど、運営削除事例(NOT FOUND)ではなかった https://b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20250423013729 (参考;昨年の自演事件 https://anond.hatelabo.jp/20241129214529)

not foundじゃなくても運営削除なんやろうなって時は結構あるやで

自演垢のBANと同時に消えるエントリnot foundじゃない削除の方が多いんよな

2025-05-01

はてな複垢自演を見かけたとき対処

最近になって増田複垢自演ブクマが行われてるのを初めて見たという人向けに基本的なことを少しだけ説明する。

運営通報する方法

自演が疑われる記事アカウントに対しては、以下のリンクにあるように、簡単運営通報できる仕組みが用意されている。

問い合わせフォームから通報する時は、自演の疑いがあるアカウント記事URLを忘れずにコピペすること。

はてなヘルプ - 【はてなブックマーク】スパムを見つけたので通報したい

https://hatena.zendesk.com/hc/ja/articles/900004879046

追記

真偽不明だが、上記通報機能を使ったけど運営に届いていなかったという報告が増田投稿されている。

https://anond.hatelabo.jp/20220810222751

ちゃん通報が届くのか不安な人は以下の問い合わせフォームを利用したほうがいいかもしれない。

はてなヘルプ - お問い合わせフォーム

https://hatena.zendesk.com/hc/ja/requests/new

通報したらどうなるのか

もし通報したアカウントが本当に自演していた場合はきっちりBANされるようになっている。

ただし通報完了してから対処されるわけではない。問い合わせにも順番待ちというものがあることと、運営による状況の確認作業必要だということは留意する必要がある。対処までの時間場合によって異なり、数時間から数日程度と幅があるのだが、通報したのが土日祝日などの運営休みの日だと、休み明けになってから対応となる。

テクウヨ増田に関しては、ほぼ毎回通報していたのだが、通報した日の夕方にBANされてその日の夜にまた復活するというパターンが多かった。

通報した記事は必ずしも削除されるわけではない

自演していたアカウントがBANされたとしても、記事の方も一緒に削除されるとは限らない。そのまま残っていることも往々にしてある。

そして記事が削除された場合であっても、ブクマページがNot Found状態になる場合とならない場合の2パターンがある。

https://b.hatena.ne.jp/q/anond.hatelabo.jp%20not%20found?target=all&date_range=all&sort=recent&safe=off&users=1

なぜ通報する必要があるのか

誰がどう見てもわかるくらい堂々と自演が行われていた場合であったとしても、基本的運営というのは利用者から通報がなければ動くことはない。

自演行為に対してブコメ増田で「運営は何してんだ、ちゃん対処してくれよ」的なことをいくら書いたところで対処されることはないので、もし本当に何とかしてほしいと思っているのであれば、自分から通報なり問い合わせをして運営側に問題認知してもらうほかない。

もし暴れていた自演アカウント荒らし投稿が消えたなら、それは誰かが通報たからだと思ったほうがいい。

2025-01-20

anond:20250120151518

top 41 - 60

#メタブメタブページIDカテゴリー直近ブクマ備考
4258 users[B! ネトウヨ] https://b.hatena.ne.jp/m-matsuoka/ b:id:m-matsuoka世の中-private
4357 users[B! はてブ] はてなブックマーク - Walk Out to the World Towerb:id:y_arimテクノロジー-Not Found
4456 users[B! はてブ] はてなブックマーク - ARTIFACT BOOKMARKb:id:kanose暮らし-private
4555 users[B! はてな] はてなブックマーク - ソーシャルブックマークb:id:kanose2034暮らし-Not Found
4555 users[B! 愛国先生] aikoku_senseiのブックマーク - はてなブックマークb:id:aikoku_sensei暮らし2020年-
4754 users[B! はてな] はてなブックマーク - kyoumoeのブックマークb:id:kyoumoe世の中-private
4754 users[B! 非表示] Yagokoroのブックマーク - はてなブックマークb:id:Yagokoroおもしろ2025年-
4953 users[B! はてブ] はてなブックマーク - bisutaのブックマークb:id:bisuta学び-Not Found
4953 users[B! メタブ] the_sun_also_risesのブックマーク - はてなブックマークb:id:the_sun_also_rises世の中2025年-
4953 users[B! はてブ] aa_R_waiwaiのブックマーク - はてなブックマークb:id:aa_R_waiwai暮らし2023年-
5252 users[B! ネトウヨ] big_song_birdのブックマーク - はてなブックマークb:id:big_song_birdおもしろ2025年-
5252 users[B! お察しください] tikuwa_oreのブックマーク - はてなブックマークb:id:tikuwa_oreおもしろ2025年-
5451 users[B! 非表示] magnitude99のブックマーク - はてなブックマークb:id:magnitude99世の中2025年-
5550 users[B! はてブ] https://b.hatena.ne.jp/pompom20/ b:id:pompom20世の中-private
5550 users[B! はてブ] cringeのブックマーク - はてなブックマークb:id:cringeテクノロジー-Not Found
5550 users[B! netwatch] https://b.hatena.ne.jp/j-kondo/ b:id:j-kondo世の中-private
5550 users[B! はてな] quick_pastのブックマーク - はてなブックマークb:id:quick_pastテクノロジー2025年-
5550 users[B! はてなブックマーク] はてなブックマーク - koizuka(戀塚昭彦)のブックマークb:id:koizukaエンタメ2024年-

anond:20250120151424

top 21 - 40

#メタブメタブページIDカテゴリー直近ブクマ備考
2373 users[B! はてブ] https://b.hatena.ne.jp/activecute/ b:id:activecute暮らし-private / コメント一覧は非表示に設定されています。
2471 users[B! 例のやつ] frothmouthブックマーク - はてなブックマークb:id:frothmouthおもしろ2025年-
2471 users[B! はてブ] amerioのブックマーク - はてなブックマークb:id:amerioテクノロジー2018年-
2670 users[B! はてな村人別帳] bogus-simotukareのブックマーク - はてなブックマークb:id:bogus-simotukare世の中2025年-
2767 users[B! hatena bookmarker] mirunaのブックマーク - はてなブックマークb:id:miruna世の中2025年-
2767 users[B! はてブ] やる夫はてなブックマークを始めたようです。 - 朱雀ブックマークb:id:suzaku-s暮らし2009年-
2966 users[B! はてサ] Cunliffeのブックマーク - はてなブックマークb:id:Cunliffeテクノロジー-Not Found
3065 users[B! はてブ] http://b.hatena.ne.jp/nekora/ b:id:nekora学び-Not Found / コメント一覧は非表示に設定されています。
3164 users[B! fromdusktildawn] fromdusktildawnのブックマーク - はてなブックマークb:id:fromdusktildawn世の中2025年-
3263 users[B! はてな] はてなブックマーク - aflat_1000dai4のブックマークb:id:aflat_1000dai4暮らし-Not Found
3263 users[B! gingin1234] はてなブックマーク - gingin1234 のブックマークb:id:gingin1234暮らし-Not Found
3462 users[B! アレ] corydalisのブックマーク - はてなブックマークb:id:corydalis世の中2025年-
3462 users[B! はてブ] はてなブックマーク - believemeimaliar のブックマークb:id:believemeimaliarテクノロジー-Not Found
3661 users[B! はてブ] はてなブックマーク - sbedit1234のブックマークb:id:sbedit1234エンタメ-Not Found
3661 users[B! はてな] atuixのはてなブックマークb:id:atuix学び-Not Found
3661 users[B! 陰謀論] charunのブックマーク - はてなブックマークb:id:charun世の中2025年-
3959 users[B! BMKSBM] はてなブックマーク - REVブックマーク - なライトノベルb:id:REV政治経済2025年-
3959 users[B! はてブ] はてなブックマーク - 直径24cmの穴嫁b:id:anigoka世の中2025年-
3959 users[B! はてブ] https://b.hatena.ne.jp/kyo_ju/ b:id:kyo_ju学び-private / コメント一覧は非表示に設定されています。

ブクマカメタブランキング

対象:50 users以上、タグ付きページは除く

前回:anond:20230829171059

top 1 - 20

#前回メタブメタブページIDカテゴリー直近ブクマ備考
11258 users →[B! AI] firststar_hatenoのブックマーク - はてなブックマークb:id:firststar_hatenoテクノロジー2025年-
2-209 users ↑[B! AI] radical-pilot-321ブックマーク - はてなブックマークb:id:radical-pilot-321テクノロジー2025年-
32183 users ↑[B! はてブ] はてなブックマーク - xevraのブックマーク [喫煙][メンヘル]b:id:xevra暮らし-private
43165 users →[B! 梅田望夫] umedamochioのブックマークb:id:umedamochio暮らし2011年-
54143 users →[B! はてな] kibotto00kyuuのブックマーク - はてなブックマークb:id:kibotto00kyuu学び-Not Found
65141 users ↓[B! mixi] はてなブックマーク - Hamachiya2のブックマークb:id:Hamachiya2暮らし2025年-
76140 users ↑[B! 2文字で表せる人] zyzyのブックマーク - はてなブックマークb:id:zyzy世の中2025年-
87129 users ↓[B! はてな] http://b.hatena.ne.jp/h_atenaaaaaa/ b:id:h_atenaaaaaaテクノロジー-Not Found
98121 users →[B! 揉め事] waawefのブックマーク - はてなブックマークb:id:waawef学び-0 bookmark
1010100 users →[B! はてな] nonomuraryutaroのブックマーク - はてなブックマークb:id:nonomuraryutaroテクノロジー2018年-
1010100 users →[B! はてブ] HiromitsuTakagiのブックマークb:id:HiromitsuTakagi暮らし-private
12990 users ↓[B! はてな] ent1astprd6のはてなブックマークb:id:ent1astprd6おもしろ-Not Found
131287 users ↓[B! はてブ] downtothedevilのはてなブックマークb:id:downtothedevil暮らし-Not Found
141385 users ↑[B! はてブ] はてなブックマーク - 財)パタフィジック収集館ふくろう団地出張b:id:Midas世の中2025年-
151582 users ↑[B! はてブ] blueboyのブックマーク - はてなブックマークb:id:blueboy世の中2025年コメント一覧は非表示に設定されています。
161480 users ↓[B! はてな] senbuuのブックマーク - はてなブックマークb:id:senbuu世の中-Not Found
171678 users →[B! はてブ] はてなブックマーク - ラージアイ・イレブンブックマーク - 「レイシズムb:id:I11暮らし2016年-
171678 users →[B! geek] https://b.hatena.ne.jp/naoya/ b:id:naoya暮らし-private
191677 users ↓[B! はてなブックマーク] hatenabookmarkブックマーク - はてなブックマークb:id:hatenabookmarkテクノロジー2025年-
202075 users →[B! はてな] mokuyoooのはてなブックマークb:id:mokuyoooおもしろ-Not Found
20-75 users ↑[B! 非表示] mouseionブックマーク - はてなブックマークb:id:mouseion世の中2025年コメント一覧は非表示に設定されています。
201975 users ↓[B! はてな] kusozakonamekuziのブックマーク - はてなブックマークb:id:kusozakonamekuziおもしろ2017-

2024-12-24

C#のArray.BinarySarch()で見つからない場合は負の値が返ってくるけど、ドキュメントを読んでもわからん

https://onecompiler.com/csharp/433ycp238

検索対象配列:[1,3,7,20]

try to find 1

found index:0

try to find 3

found index:1

try to find 8

not found

near index:2

try to find 100

not found

near index:3

コードで書くとこういう感じになるが、これで解釈はあってる?

2024-12-08

anond:20240922150711

あと、セルフ削除だとブクマのページに本文冒頭部分が残る(セミ魚拓)だけど、Not Foundだとそれもないよね

2024-12-01

anond:20241201031105

どれだけ言い訳しても実際Not Foundになった増田左翼リベラル叩きのネトウヨ全開なのばかりだった時点でチェックメイトです

ログイン ユーザー登録
ようこそ ゲスト さん