はじめに
この記事では、学外から学校のパソコンにリモートアクセスし、IEEE Xploreから論文を自動的にダウンロードするためのシェルスクリプトを紹介します。この方法は、IEEEと連携している学校で、学内のサーバーにアクセスできる環境が必要です。
注意: この手順を実行する前に、SSH接続が可能な設定になっていることを確認してください。SSH接続がまだ設定されていない場合は、まずそちらを設定してからこの記事を進めてください。
前提条件
- 学校がIEEEと契約していること
- 学校のサーバーにSSHでアクセスできること
- 基本的なシェルスクリプトの知識があること
シェルスクリプトの概要
次に示すシェルスクリプトを使用することで、論文のARN(論文番号)を指定してIEEE XploreからPDFをダウンロードすることができます。
スクリプト
#!/bin/bash
arnumber=$1
# arnumberが空の場合は終了
if [ -z "$arnumber" ]; then
echo "Usage: $0 <arnumber>"
exit 1
fi
HEADERS=(
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
)
SESSION_COOKIE=$(curl -s -c - "https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=$arnumber" "${HEADERS[@]}")
curl -L -s -b <(echo "$SESSION_COOKIE") -o paper.pdf "https://ieeexplore.ieee.org/stampPDF/getPDF.jsp?tp=&arnumber=$arnumber&ref=" "${HEADERS[@]}"
スクリプトの解説
-
ARN番号の入力:
- スクリプトは、最初の引数として論文のARN番号を受け取ります。これが指定されていない場合、スクリプトは使い方を表示して終了します。
-
リクエストヘッダーの設定:
- シェルスクリプトでは、curlコマンドを使用してIEEE Xploreにアクセスしますが、その際に必要なリクエストヘッダー(
user-agent
)を設定します。user-agent
の値はこの値ではなくても構いません。ただし、適当な値で通るかは不明。
ちなみに、なぜかuser-agent
がないと弾かれてしまうんですよね... 不思議
- シェルスクリプトでは、curlコマンドを使用してIEEE Xploreにアクセスしますが、その際に必要なリクエストヘッダー(
-
セッションクッキーの取得:
- 最初のcurlリクエストで、指定したARN番号の論文ページにアクセスし、セッションクッキーを取得します。このクッキーが後のPDFダウンロードに必要です。
-
PDFのダウンロード:
- 取得したセッションクッキーを使用して、論文のPDFファイルをダウンロードし、
paper.pdf
という名前で保存します。
- 取得したセッションクッキーを使用して、論文のPDFファイルをダウンロードし、
実行例
以下のようにスクリプトを実行し、特定の論文をダウンロードできます。
./download_ieee_paper.sh 1234567
実行後、現在のディレクトリにpaper.pdf
が保存されているはずです。
まとめ
このシェルスクリプトを使うことで、学外からでも学校のネットワークを経由してIEEE Xploreから論文を簡単にダウンロードできるようになります。便利なツールとして活用してください。