LoginSignup
5
1

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

Last updated at Posted at 2023-08-10

リリースに至った経緯

これまで筆者は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系をサポート.

インストール

pip3 install useragent-changer

もしくは

pip3 install git+https://github.com/gitmori/useragent-changer

使用方法

User-Agent文字列を出力する.

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をインストールする.

pip3 install selenium

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

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

ソースコード

下記GitHubリンクにて公開
gitmori/useragent-changer: User-Agent changing library for Python.

5
1
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
5
1