質問するログイン新規登録
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Python

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

Q&A

1回答

169閲覧

requestsというライブラリを使ってスクレイピングをする時、ユーザーエージェントとSSL証明書の指定を両立させる方法を知りたいです。

kasusa3

総合スコア0

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Python

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

0グッド

0クリップ

投稿2025/09/05 19:15

0

0

実現したいこと

requestsというライブラリを使ってスクレイピングをする時、ユーザーエージェントとSSL証明書の指定を両立させる方法を知りたいです。

requests.exceptions.SSLError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: /exampleapi (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:1000)'),))

一か月半前はちゃんと動いていたスクレイピングコードが何も変えていないのに上のようなエラーがでて動かなくなってしまいました。その際に上記のようなエラーがでたので、これを解消するために、SSL証明書(のパス)をrequests.getに組み込んでスクレイピングを行いたかったのですが上手くいきませんでした。

競馬ラボというサイトからスクレイピングを行いたくて、このサイトはユーザーエージェントを指定する必要があるため、SSL証明書の指定とユーザーエージェントの指定を両立させる方法を教えてください。

前提

ここに質問の内容を詳しく書いてください。
(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

python

1 2#問題の部分だけを抜き出すと以下のような感じです。 3 4 load_url = "https://www.keibalab.jp~(任意のURL)" 5 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0"} 6 html = requests.get(load_url,verify=r"任意のファイルのパス", headers=headers) 7 soup = BeautifulSoup(html.content, "html.parser") 8 9#このような感じでシンプルにheaders=headersの前にくっつけるか、後ろにくっつける感じでやってみましたが上手くいきませんでした。SSL証明書とユーザーエージェントを共存させる方法が検索してもなかなかいい情報がヒットせず、教えていただければ幸いです。 10

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

エラーが出ている根本原因はサーバー側のSSL設定の誤りです。
指定の方法自体は質問の内容で合ってそうです。

サーバーの証明書情報を見ると、 Cybertrust Japan SureServer CA G4 で署名されていることがわかります。

Server certificate subject=C=JP, ST=Tokyo, L=Minato-ku, O=Do Innovation Co.,Ltd., CN=*.keibalab.jp issuer=C=JP, O=Cybertrust Japan Co., Ltd., CN=Cybertrust Japan SureServer CA G4

しかしながら、サーバーに接続した際に返される証明書チェーンでは Cybertrust Japan SureServer EV CA G3 が返ってていきます。G4 の証明書はサーバーから返されていないので、検証できずにエラーになっています。

0 s:C=JP, ST=Tokyo, L=Minato-ku, O=Do Innovation Co.,Ltd., CN=*.keibalab.jp i:C=JP, O=Cybertrust Japan Co., Ltd., CN=Cybertrust Japan SureServer CA G4 a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption v:NotBefore: Aug 27 06:54:36 2025 GMT; NotAfter: Sep 13 14:59:00 2026 GMT 1 s:C=JP, O=Cybertrust Japan Co., Ltd., CN=Cybertrust Japan SureServer EV CA G3 i:C=JP, O=SECOM Trust Systems CO.,LTD., OU=Security Communication RootCA2 a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption v:NotBefore: Dec 13 06:28:45 2023 GMT; NotAfter: May 29 05:00:39 2029 GMT

対策としては以下のいずれかになるかと思います。

  • G4 の証明書が含まれたファイルを作成してverifyで指定する
  • verify=False を指定する

投稿2025/09/07 00:42

Eggpan

総合スコア3303

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問