【Python】User-Agentを最も簡単に変更できるライブラリをリリース

## リリースに至った経緯
これまで筆者はWebサイトのアクセス検証のために様々なユーザーエージェントを呼び出す（偽装というと語弊がある）ことができるライブラリとして，**fake-useragent**を使用してきた.

しかしながら，2018年10月にリリースされた**バージョン0.1.11**のままアップデートに気づかずに使用していたため，下記のエラーが発生していた.

```
fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached
```

なお，現在は最新バージョンが配布されているためエラーは解消されている.

仕方なく自作ライブラリ**useragent-changer**で代用してきたが，我ながら使い勝手が良く気に入っているため，このたびパッケージングし**PyPI**にて公開・配布するに至った.

## useragent-changerの特徴
- 本パッケージには，下記にリストアップされているプラ​​ットフォームに対応した合計19,381個のUser-Agentデータが収録されている.
- Android (2,144), Chrome (4,996), Edge (91), Firefox (2,132), iPad (45), iPhone (750), Mac (1,739), Safari (4,952), Windows (2,532)
- 各プラットフォームに対応したUser-Agentは，本パッケージ内のデータフォルダ内に存在する9つのCSVファイルに収録されている.
- Python3系をサポート.

## インストール

```zsh
pip3 install useragent-changer
```
もしくは
```zsh
pip3 install git+https://github.com/gitmori/useragent-changer
```

## 使用方法
User-Agent文字列を出力する.

```python
from useragent_changer import UserAgent

ua = UserAgent('android')
print(ua.set())
# Dalvik/2.1.0 (Linux; U; Android 10; ASUS_Z01RD Build/QKQ1.191008.001)

ua = UserAgent('iphone')
print(ua.set())
# Mozilla/5.0 (iPhone; CPU iPhone OS 12_5_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Mobile/15E148 Safari/604.1

ua = UserAgent('ipad')
print(ua.set())
# Mozilla/5.0 (iPad; CPU OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/94.0.4606.76 Mobile/15E148 Safari/604.1

ua = UserAgent('windows')
print(ua.set())
# Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)

ua = UserAgent('mac')
print(ua.set())
# Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:49.0) Gecko/20100101 Firefox/49.0

ua = UserAgent('chrome')
print(ua.set())
# Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 74.0.3729.169 Safari / 537.36

ua = UserAgent('edge')
print(ua.set())
# Mozilla/5.0 (Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.9200

ua = UserAgent('safari')
print(ua.set())
# Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; ja) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.523 Mobile Safari/534.11+

ua = UserAgent('firefox')
print(ua.set())
# Dalvik/2.1.0 (Linux; U; Android 10; ASUS_Z01RD Build/QKQ1.191008.001)

ua = UserAgent()
print(ua.set())
# Get a random User-Agent
```

## 動作テスト
**Selenium**がインストールされていない場合は下記コマンドを実行し，**Selenium**をインストールする.
```zsh
pip3 install selenium
```

引数を`firefox`として動作確認する.

```python
from selenium.webdriver import ChromeOptions, Chrome
from useragent_changer import UserAgent
from time import sleep

# プラットフォームを設定（'Firefox'を設定）
PLATFORM= 'firefox'

# Webサイト「IPアドレス確認・環境情報取得ツール」にアクセス
URL = 'https://develop.tools/env-variable/'

# インスタンスを生成
ua = UserAgent(PLATFORM)

# オプションを設定
options = ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--user-agent=' + ua.set())

# chromedriverを使用しブラウザを起動
driver = Chrome(options=options)
driver.get(URL)

# 設定した秒数を待機後ブラウザを終了
SECONDS = 5
sleep(SECONDS)
driver.quit()
```

## 出力画面

表示されたページ内のブラウザ項目に**Firefox**が表示され，User Agent項目にも**Firefox**に対応した文字列が表示された.

![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478088/0155277f-48b7-4e6b-743d-eb31d802cee7.png)

## ソースコード
下記GitHubリンクにて公開
[gitmori/useragent-changer: User-Agent changing library for Python.](https://github.com/gitmori/useragent-changer)