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?

SeleniumでHTTP HEADERにパラメータ追加する方法

Posted at

ChromeブラウザでHTTPリクエストヘッダーに独自のパラメータを追加する方法はいくつかあります。以下に説明します:

方法 1: Selenium DevTools Protocolを利用

SeleniumのDevTools Protocolを使うと、HTTPリクエストを直接操作してカスタムヘッダーを追加できます。

サンプルコード:

from selenium import webdriver

Chrome Driverの作成

driver = webdriver.Chrome()

DevToolsプロトコルを有効化

driver.execute_cdp_cmd("Network.enable", {})

カスタムHTTPヘッダーを設定

driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {
"headers": {
"Custom-Header": "CustomValue", # 独自のパラメータ
"Another-Header": "AnotherValue"
}
})

ターゲットURLを開く

driver.get("https://example.com")

ブラウザを終了

driver.quit()

方法 2: Chrome拡張機能を使用

Modify HeaderなどのChrome拡張機能や自作の拡張を使ってリクエストヘッダーを変更・追加できます。

自作拡張の例:
1. manifest.jsonを作成:

{
"manifest_version": 3,
"name": "Add Custom Header",
"version": "1.0",
"permissions": ["webRequest", "webRequestBlocking", "storage", "activeTab"],
"host_permissions": [""],
"background": {
"service_worker": "background.js"
}
}

2.	background.jsでヘッダーを追加:

chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
details.requestHeaders.push({name: "Custom-Header", value: "CustomValue"});
return {requestHeaders: details.requestHeaders};
},
{urls: [""]}, // 全てのURLを対象
["blocking", "requestHeaders"]
);

3.	Seleniumで拡張機能を読み込む:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--load-extension=/path/to/your/extension") # 拡張機能のパス

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

方法 3: プロキシを使ってリクエストを改変

MitmproxyやFiddlerなどのプロキシツールを使えば、リクエストを傍受してヘッダーを追加できます。

サンプルコード(Mitmproxyスクリプト):
1. modify_headers.pyというスクリプトを作成:

from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
flow.request.headers["Custom-Header"] = "CustomValue"

2.	SeleniumでMitmproxyを利用:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://127.0.0.1:8080") # Mitmproxyのプロキシアドレス

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

Mitmproxyを起動すると、すべてのリクエストが改変されます。

方法 4: fetchまたはXMLHttpRequestでヘッダーを変更

JavaScriptを直接実行できる場合、fetchやXMLHttpRequestを使ってヘッダーを追加できます。

サンプル:

fetch("https://example.com", {
method: "GET",
headers: {
"Custom-Header": "CustomValue"
}
}).then(response => response.text())
.then(data => console.log(data));

このスクリプトをSeleniumのexecute_scriptでブラウザ内に実行:

script = """
fetch("https://example.com", {
method: "GET",
headers: {
"Custom-Header": "CustomValue"
}
}).then(response => response.text())
.then(data => console.log(data));
"""
driver.execute_script(script)

まとめ
• ブラウザ全体でカスタムヘッダーを使いたい場合:Chrome拡張を使うのがおすすめ。
• 自動化が目的の場合:SeleniumのDevTools Protocolが最も簡単。
• 柔軟性を重視する場合:Mitmproxyなどのプロキシツールを利用。

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?