Reik
@Reik

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Python スクレイピング についての質問

解決したいこと

Pythonでスクレイピングする際にrequestsにプロキシ設定をすると以下のエラーが起きます。
前までは問題なかったのですが、どこが問題なのでしょうか?プロキシ設定を指定しければ問題なく動作します。
コード内の追記コードを使用して画像のようなjsonファイルを読み込んでプロキシ設定をしていました。前は問題がなかったのですが、同じようにしてもエラーが起きるようになってしまいました。image.png

<試したこと>
リンク先を複数試した。(初めてのリンク先も試した。)
proxiesの内容を複数試した。
時間を1日ほどおいた。
Colab環境なのでJupyter labも試した。
環境端末を変更した。

発生している問題・エラー

[ConnectionRefusedError] Traceback (most recent call last)
[MaxRetryError] Traceback (most recent call last)
[NewConnectionError] Traceback (most recent call last)
[ProxyError] Traceback (most recent call last)
[ProxyError]: HTTPSConnectionPool: Max retries exceeded

該当するソースコード

import requests
from bs4 import BeautifulSoup

URL = "https://www.cman.jp/network/support/go_access.cgi"
USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"

proxies = {
      'http':'https://39.108.154.193:22',
      'https':'https://39.108.154.193:22'
}

headers = {'User-Agent': USER_AGENT}

resp = requests.get(URL, proxies=proxies, headers=headers, timeout=10)
resp.encoding = 'utf8'
soup = BeautifulSoup(resp.text, 'html.parser')

ip = soup.find(class_ = "outIp").text
print(ip)
#<追記>
json_open = open(FILE_PATH, 'r')
proxy_list = json.load(json_open)
proxy_info = random.choice(proxy_list)
ip = proxy_info['ip']
port = proxy_info['port']
protocol = proxy_info['protocol']
proxy = protocol + '://' + str(ip) + ':' + port
proxies = { 'http':proxy,
'https':proxy}
0

1Answer

前までは問題なかった
プロキシ設定を指定しなければ問題なく動作します。

以上2点と,前回の意見交換から考えるに,高頻度でプロキシを介したアクセスをしすぎて,プロキシサーバの管理者からReikさんのIPがブロックされている可能性が考えられます.

0Like

Comments

  1. @Reik

    Questioner

    回答ありがとうございます。
    そう言うことでしたかありがとうございます。
    有料プロキシサーバを使用する、他のプロキシサーバを使用する等で改善しますでしょうか?
    それとも時間をおいて解決しますでしょうか?
  2. 一旦ブロックされたものは時間を置いても解決しないと考えるのが良いでしょう.
    プロキシサーバの管理者に,ReikさんのIPアドレスをブロックしないように依頼するのが一番コストが少ない方法かと思います.

    あとコードを見直したところ,プロキシサーバをランダムに選んだつもりでいらっしゃるようですが,追記されたコードが,http requestのよりも下にあるので,選ばれたプロキシサーバは39.108.154.193のみでコードが動いているように感じます.おそらくこのアドレスのサーバを管理している人がReikさんのIPをブロックしたと考えるのが妥当ではないでしょうか.

    また無料プロキシリスト https://www.freeproxylists.net/ja/ から選ばれて使っているようですがコード中のIPアドレスはもうなくなっていました. こちらが原因の可能性もありますね.

    いずれにせよ,プロキシサーバを介して発信元を秘匿する必要のある通信を行おうとしているのはあまりいただけませんがね
  3. @Reik

    Questioner

    詳しく説明ありがとうございます。
    そちらの方法一度実践してみます。

    いずれにせよ,プロキシサーバを介して発信元を秘匿する必要のある通信を行おうとしているのはあまりいただけませんがね>>>
    ありがとうございます。
    開発段階でアクセス制限がかけられると開発が進まなくなってしまうので、開発段階のみ使用するつもりです。

Your answer might help someone💌