現在pythonを使って簡単なクライアント用ブラウザを開発しようとしています。pythonで次のことができる方法はありますか。使用するpythonのライブラリを含めて教えていただけると助かります。  
１．モダンブラウザと同様にHTMLがレンダーできる。  
２．モダンブラウザと同様にjavascriptをインタプリターできる。  
３．モダンブラウザと同様に通信できる。  
４．SSL通信にも対応する。  
５．ページをクリックしてリンク先（HTML上はhrefのリンク先）のページに遷移するときのURL（またはhttpリクエスト）を取得できる。※ここがポイント  
６．hrefでなくてもHTML上のjavascriptで定義されたボタンのクリックで新しいページに遷移する場合もそのURL（またはhttpリクエスト）を取得できる。※ここがポイント  
７．httpリクエストはSLL通信の場合でも取得できる。つまり暗号化する前に取得することだと思います。  
８．PyQtは使わない。ライセンスが厳しいし、有償だと高額なため。  
９．ブラウザの戻る／進むボタンやお気に入り、アクセス履歴などの上記の機能以外は不要。

特に５と６がポイントです。それ以外はpywebviewでもwebbrowserでもできると思うのですが、５、６ができません。これができればブラウザ機能はpython
webbrowserを使ってもpywebviewでもpycurlでも構いません。ただし、上記の通りPyQtはダメ。  
最適な組み合わせと実現方法を教えていただけると助かります。どうぞよろしくお願いします。
CC BY-SA 4.0
2022-02-01T02:46:21.513
86057
2022-02-01T04:59:08.060
2022-02-01T04:52:15.917
18638
18638
question
python ssl webview browser
pythonでhttpリクエストを取得する方法
[selenium-wire - PyPI](https://pypi.org/project/selenium-wire/) が使えるのでは？

こちらが古い同様の要求についての質問ですが、回答で「2021年現在、答えはYESです。新しいライブラリ selenium-wire を使えます」とあります。  
[Is there any way to log http requests/responses using Selenium Webdriver
(firefox)?](https://stackoverflow.com/q/12034013/9014308)

PyPIやGitHubの解説では、リクエストだけではなくレスポンスも取得出来ると書かれています。  
ブラウザを作るというような壮大な車輪の再発明に着手するよりは、既存のブラウザをそのまま使う方がはるかに良いと思われます。

[Accessing Requests](https://pypi.org/project/selenium-wire/#accessing-
requests)

> Selenium Wire captures all HTTP/HTTPS traffic made by the browser.

> Selenium Wireは、ブラウザによって作成されたすべてのHTTP/HTTPSトラフィックをキャプチャします。

[Intercepting Requests and Responses](https://pypi.org/project/selenium-
wire/#intercepting-requests-and-responses)

> As well as capturing requests and responses, Selenium Wire allows you to
> modify them on the fly using interceptors. An interceptor is a function that
> gets invoked with requests and responses as they pass through Selenium Wire.
> Within an interceptor you can modify the request and response as you see
> fit.

> Selenium
> Wireを使用すると、要求と応答をキャプチャするだけでなく、インターセプターを使用してその場でそれらを変更できます。インターセプターは、リクエストとレスポンスがSeleniumWireを通過するときに呼び出される関数です。インターセプター内で、必要に応じて要求と応答を変更できます。

追記：  
質問が編集されて取得したいのが`httpリクエスト`から`URL（またはhttpリクエスト）`に変わったようですが、解説記事の各所に例えば`request.url`,`URL`や`driver.requests`,`driver.last_request`,`Request
Objects`などと書いてあるように、`URL`も`httpリクエスト`も問題無く取得出来るでしょう。

* * *

こちらに簡単な使い方の記事があります。  
[How to capture HTTP requests using
Selenium](https://www.dilatoit.com/2020/12/17/how-to-capture-http-requests-
using-selenium.html)

こちらはAJAXのリクエストを取得出来るという記事。  
[Selenium-wire does not intercept requests when connecting
remotely](https://stackoverflow.com/q/67445613/9014308)

こちらは広告の削除に応用した例。  
[Seleniumで広告をブロックし読み込みを速くする【selenium-
wire】](https://www.zacoding.com/post/selenium-ad-block/)
CC BY-SA 4.0
2022-02-01T04:24:27.733
86058
2022-02-01T04:59:08.060
2022-02-01T04:59:08.060
26370
26370
86057
answer