ChatGPTのAPIを用いて、セキュリティニュースを分類・要約するプログラムです。
出力例
git clone https://github.com/Sh1n0g1/security_news_matomerukun.git
cd security_news_matomerukun
vim ./scripts/matomerukun_config.py
でOpenAI社のAPI Keyを入力します。OPENAI_KEY="changeme"
docker build . -t security_matomeru
docker run -p 80:80 --shm-size=256m -v $(pwd)/articles:/var/www/articles --name security_matomeru security_matomeru
* Starting Apache httpd web server apache2
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
*
[*] Security News Watcher
[+] Getting CSS...
[*] Title:記事のタイトル
[+] Getting Text...
[WDM] - Downloading: 100%|██████████| 6.83M/6.83M [00:00<00:00, 11.7MB/s]
http://ホストのIPアドレス/
にアクセスすると要約された記事が読めます。
docker ps
で起動しているコンテナ一覧を表示させて、security_news
イメージの名前(NAMES
列)を確認するdocker stop <コンテナのNAME>
でコンテナを停止します。
docker rm <コンテナのNAME>
でコンテナを削除します。docker ps -a
でコンテナ一覧が表示できます。コンテナが消えていることを確認します。
docker rmi security_news
でイメージを削除します。docker images
でイメージ一覧を取得し、security_news
イメージがないことを確認します。以下の項目がロジックを変更することなく、簡単にカスタマイズ可能です。
script/matomerukun_config.py
の以下の部分がカスタマイズできます。
USER_AGENT='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
INTERVAL=3600 # 1 hour
RSS_URLS = ['https://www.bleepingcomputer.com/feed/']
CATEGORIES=["incident", "vulnerability", "other"]
USER_AGENT
:ニュース記事を取得する際のUserAgentINTERVAL
:RSSをチェックする間隔RSS_URLS
:RSSのURLCATEGORIES
:カテゴリ
prompt_categorize.txt
を更新し、prompt_<category>.txt
を作成する必要があります。script/prompt_*.txt
となっているテキストファイルはChatGPTに送る命令の内容です。
prompt_categorize.txt
:記事の分類prompt_incident.txt
:インシデントの記事のサマリprompt_vulnerability.txt
:脆弱性の記事のサマリprompt_other.txt
:その他の記事の記事のサマリhtml/index.php
内の$ARTICLES_PER_PAGE=10;
docker ps
で動作しているコンテナのNAMES
を確認するdocker exec -it <コンテナのNAME> /bin/bash
ps -aux
をコマンドを実行すると以下が正しい実行中プロセス一覧となります。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2888 468 ? Ss Mar31 0:00 /bin/sh -c service apache2 start; python3 /var/www/scripts/security_news_w
root 25 0.0 0.6 199888 12360 ? Ss Mar31 0:01 /usr/sbin/apache2 -k start
www-data 30 0.0 0.6 200420 14060 ? S Mar31 0:00 /usr/sbin/apache2 -k start
www-data 31 0.0 0.5 200420 12060 ? S Mar31 0:00 /usr/sbin/apache2 -k start
www-data 32 0.0 0.6 200420 12088 ? S Mar31 0:00 /usr/sbin/apache2 -k start
www-data 33 0.0 0.5 200420 12064 ? S Mar31 0:00 /usr/sbin/apache2 -k start
www-data 34 0.0 0.5 200420 12016 ? S Mar31 0:00 /usr/sbin/apache2 -k start
root 37 0.0 1.9 120088 39384 ? Sl Mar31 0:03 python3 /var/www/scripts/security_news_watcher.py
www-data 282 0.0 0.5 200420 10808 ? S Mar31 0:00 /usr/sbin/apache2 -k start
root 1531 0.5 0.1 4624 3680 pts/0 Ss 01:22 0:00 /bin/bash
root 1539 0.0 0.1 7368 3100 pts/0 R+ 01:22 0:00 ps -aux
ls -l /var/www/articles/
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log