0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

学外から学校のパソコンを使ってIEEEにアクセスし、論文をダウンロードするシェルスクリプト

Posted at

はじめに

この記事では、学外から学校のパソコンにリモートアクセスし、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[@]}"

スクリプトの解説

  1. ARN番号の入力:

    • スクリプトは、最初の引数として論文のARN番号を受け取ります。これが指定されていない場合、スクリプトは使い方を表示して終了します。
  2. リクエストヘッダーの設定:

    • シェルスクリプトでは、curlコマンドを使用してIEEE Xploreにアクセスしますが、その際に必要なリクエストヘッダー(user-agent)を設定します。user-agentの値はこの値ではなくても構いません。ただし、適当な値で通るかは不明。
      ちなみに、なぜかuser-agentがないと弾かれてしまうんですよね... 不思議
  3. セッションクッキーの取得:

    • 最初のcurlリクエストで、指定したARN番号の論文ページにアクセスし、セッションクッキーを取得します。このクッキーが後のPDFダウンロードに必要です。
  4. PDFのダウンロード:

    • 取得したセッションクッキーを使用して、論文のPDFファイルをダウンロードし、paper.pdfという名前で保存します。

実行例

以下のようにスクリプトを実行し、特定の論文をダウンロードできます。

./download_ieee_paper.sh 1234567

実行後、現在のディレクトリにpaper.pdfが保存されているはずです。

まとめ

このシェルスクリプトを使うことで、学外からでも学校のネットワークを経由してIEEE Xploreから論文を簡単にダウンロードできるようになります。便利なツールとして活用してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?