質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.34%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

2回答

375閲覧

Python Selenium EdgeでhttpのURLを開く方法

kenken0117

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

1クリップ

投稿2024/12/05 04:44

PythonのSeleniumライブラリについてです。
EdgeでhttpのURLを開こうとしましたが、
自動でhttpsにリダイレクト?されています。
httpのまま開くことはできないでしょうか?

以下、コードの主要部分のみ示します。
なお、URLは社外秘であるため、適当に書いています。

Python

1driver = webdriver.Edge() 2url = 'http://sample.co.jp/' 3driver.get(url) 4input()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2024/12/05 15:40

答えは、togeさんの回答の通りですが、 ブラウザの自動操作は、まず手動で操作して問題なく出来る事を確認してからです。 手動では出来ることでも自動操作ではいくら頑張っても出来ないことはありますが。 (サーバー側で自動操作でないことを何らかの手段で確認している場合など)
kenken0117

2024/12/08 07:57

いつもご回答やコメントを頂き、ありがとうございます。 手動で操作して問題なく実施できることは確認しております。 toge_様のご回答へのコメントにも書かせていただいた通り、Seleniumでの自動化の際に生じた問題になります。 以上、よろしくお願いいたします。
meg_

2024/12/08 09:04

> なお、URLは社外秘であるため、適当に書いています。 社内のサイトということであればサイトの担当者に問い合わせはしましたでしょうか?
otn

2024/12/08 11:05

回答へのコメントを見ましたが、 > Seleniumで立ち上げられたEdgeには適用されないため、 「ブラウザの設定をデフォルトから変更して、手動ではOKになった」ということでしょうか? であれば、Seleniumが起動するブラウザのプロファイルにもそれと同じ設定にしないと駄目ですね。 手動ブラウザで正常動作するまでにやったことと同じ事をSelenium側でもやる必要があります。 設定変更済みのプロファイルをEdgeのコマンドラインオプションで指定できるのであれば(Chromeだと出来ます)、そういう手段が楽でしょう。 設定済みプロファイルの使用は、「手動では認証できるが、Selenium経由だと認証が難しい(ロボットと判断されるなど)ので、手動で認証済みのプロファイルをSelenium軽油でも使いたい」とかのニーズで、Chromeについては過去に何度もそういう質問が出ています。Edgeでのケースはあったかどうか。
kenken0117

2024/12/13 14:54

お返事ありがとうございます。 Edgeではflagを設定するのですが、Seleniumで同等の設定を行う方法を調べても見つけることができませんでした。 英語のドキュメント等で設定可能なオプションを確認しましたが、該当のものがなさそうでした。
guest

回答2

0

Seleniumは対象のブラウザを操作しているだけなので、httpをhttpsに変換しているのはEdge側だと思います。
以下のURLで記載がある通り、Edge側の設定を変更することで、httpsに勝手に変更になるのを回避できるはずです。
https://answers.microsoft.com/ja-jp/microsoftedge/forum/all/edge%E3%81%A7%E7%89%B9%E5%AE%9A%EF%BD%95%EF%BD%92/d9c50977-bca1-434d-ade8-8691eeda755f

サーバー側でhttpで接続されたらhttpsにリダイレクトする実装になっている場合は、回避不能ですのでサーバー側でその設定を変更してもらう必要があると思います。

投稿2024/12/05 14:41

toge_

総合スコア280

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenken0117

2024/12/08 07:54

ご回答ありがとうございます。 ご回答いただいた内容については、ご質問前に調べ、すでに試しておりました。 Edge側の設定を変えても、Seleniumで立ち上げられたEdgeには適用されないため、今回のご質問をさせていただきました。 以上、よろしくお願いいたします。
toge_

2024/12/08 09:29

なるほど、だとすると、Seleniumを使わずにEdgeを直接操作して、httpの方のURLにアクセスするとどうなるんでしょうか? これでhttpsに自動で変更されてしまうようでしたら、Selenium側でどうにかする方法はないように思います。
toge_

2024/12/08 11:39

おっと、回答の後半を見ていませんでした。 otnさんがコメントで書いている通りですので、プロファイル側での設定で解決しそうですね。
kenken0117

2024/12/13 14:56

コメント頂きありがとうございます。 otn様にも同様の回答をさせていただきましたが、Selenium上でEdgeの設定をする必要がありそうです。 しかし、その方法を調べても見つからず、今に至ります。
guest

0

Edgeではflagを設定するのですが、Seleniumで同等の設定を行う方法を調べても見つけることができませんでした。

私の説明が通じてない気がします。
「手動で行ったEdgeの設定操作を、SeleniumでEdgeを操作して同じ設定操作行う」
をしようと思ってませんか?
そんなことをする必要は無いです。

手動で行ったEdgeの設定操作を行った結果が、(プロファイルフォルダーの中の)Edge設定ファイルに書かれているので、その設定済みのプロファイルフォルダーをそのまま【Seleniumが起動するEdge】でも使うようにします。

【Seleniumが起動するEdge】はデフォルトでは、新規自動作成されたプロファイルフォルダーの中のデフォルトのままのEdge設定ファイルを使います。

少なくともChromeでは、
・新規作成のプロファイルフォルダーを使う
・すでにあるプロファイルフォルダーを使う
の選択が起動時のコマンドラインオプションで指定出来るので、Edgeでも出来るのではないか?
ということです。

ググってみると、Edgeでも同じ方法で出来そうですね。
–-user-data-dirでプロファイルフォルダーの入っている親フォルダーを指定して、–-profile-directoryでその中のどのプロファイルフォルダーを使うかを指定します。
プロファイルは、Edgeでedge://version/で表示されます。
私の環境だと、C:\Users\XXXXXX\AppData\Local\Microsoft\Edge\User Data\Defaultなので、

-–user-data-dir=C:\Users\XXXXXX\AppData\Local\Microsoft\Edge\User Data
-–profile-directory=Default

そのまま使わず、フォルダーをどこかにコピーしてそれを使った方が良いかもしれません。

投稿2024/12/14 03:53

otn

総合スコア85989

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenken0117

2024/12/15 08:34

ご回答ありがとうございます。 おっしゃる通り、私の認識がズレていました。 ご説明いただいた内容を試してみます。 細かくご丁寧に教えていただき、ありがとうございました。
otn

2024/12/15 14:11

この説明で通じたかどうか、少し心配していましたが、良かったです。 > そのまま使わず、フォルダーをどこかにコピーしてそれを使った方が良いかもしれません。 の理由を書いてませんでしたが、万が一、Seleniumを使うプログラムにバグがあって、プロファイルの中味がおかしなっても、手動のEdgeに影響しないようにしたいので、コピーの方を使うという意味です。 Defaultフォルダーをどこかにコピーして、その場所を--user-data-dirに指定します。 そう書いた物の、あまりそんな心配は無いような気もするので、同じ物を使ってもいいです。 (履歴などに、自動操作分が増えるくらいか?だとすると、無限ループで履歴が何千個も増えて古い履歴が消されるとか、あるいは数百個もタブを開こうとしてブラウザが落ちてしまった場合、ブラウザ設定で「起動時に前回開いていたタブを復元」という設定だと復元できないかも。など無限ループ系ですね)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.34%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問