主な内容:プロキシIPの使い方の原則、自作クローラにプロキシIPを設定する方法、プロキシIPが有効かどうかの見分け方、有効でない場合、どこに問題があるか、個人利用(有償)のプロキシIP。
目次
プロキシ IP の原則
URL を入力するとどうなりますか?
1. ブラウザがドメイン名を取得
2. DNS プロトコルを介して、ドメイン名に対応するサーバーの IP アドレスを取得します。
3. ブラウザと対応するサーバーは、スリーウェイ ハンドシェイクを通じて TCP 接続を確立します。
4. ブラウザは、HTTP プロトコルを介してサーバーにデータ要求を送信します。
5. サーバーがクエリ結果をブラウザに返す
6. 4 回手を振って TCP 接続を解放します
7.ブラウザのレンダリング結果
これには以下が含まれます:
アプリケーション層: HTTP および DNS
トランスポート層: TCP UDP
ネットワーク層: IP ICMP ARP
プロキシIPは何をしましたか?
簡単に言えば、次のとおりです。
もともとあなたの訪問
プロキシを使用した後の訪問
プロキシを使用する理由
爬虫類を作っていると、こういう場面によく遭遇するので、最初はクローラーが正常に動いて、データを取得している様子がとても綺麗に見えますが、お茶を飲んでいると、403 Forbidden などのエラーが発生することがあります。見てみると、「あなたのIPアクセス頻度が高すぎます」のようなプロンプトが表示される場合があります. この現象の理由は、Web サイトがクローラー対策を講じているためです。たとえば、サーバーは特定の IP に対する単位時間内のリクエスト数を検出し、このしきい値を超えると、サービスを直接拒否し、エラー メッセージを返します. このような状況を IP ブロッキングと呼ぶことができます. プロキシ ip はこの問題を回避します。
プロキシ IP はクローラー コードで使用されます
リクエスト時にヘッダーをマスカレードするのと同じように、IP をマスカレードします。{}に注意してください。
proxies = {
'https':'117.29.228.43:64257',
'http':'117.29.228.43:64257'
}
requests.get(url, headers=head, proxies=proxies, timeout=3) #proxies
プロキシ IP の取得
proxiesに格納した ばかりのプロキシと同様に、リクエストのパラメータとして直接使用できます。それでは、プロキシを作成しましょう
最初にプロキシ IP プロバイダーを開きます。ここで IPIDEA を選択します (チャネルは常に広告と見なされます。リンクは下に配置されています。新規ユーザー登録のための無料トライアルがあることを覚えています)。通常、API を使用して取得します。つまり、インターフェイスは必要な IP を直接取得し、サプライヤーは提供された IP 情報を返します。
必要に応じて調整できます。
ここで URL からクリックして API を使用してデモンストレーションを行うと、URL リンクが生成されます. このリンクを直接リクエストして、プロキシ IP の詳細情報を取得します.
# 拿到供应商给我们的代理IP
URL = "https://www.ipidea.net/?utm-source=csdnhao&utm-keyword=%3Fcsdnhao"
# 这里参数控制了数量 格式 和ip协议等等 这也算是它的一个优势吧,多的话可以提取几百,而且可以指定城市从固定地点提取ip,更符合爬虫模拟人类的行为特征。
url = "http://api.proxy.ipidea.io/getProxyIp?num=1&return_type=txt&lb=1&sb=0&flow=1®ions=&protocol=http"
# 输出ip
res = requests.get(url)
print(res.text)
# 这个ip就可以放在我们实际要请求的网页requests中了
プロキシ IP が有効かどうかを確認する
IP アドレスを返す Web サイトにアクセスします。
print(requests.get('http://httpbin.org/ip', proxies=proxies, timeout=3).text)
重要な点は、プロキシ IP を使用してアクセスすることです.返された IP が私の IP ではない場合、プロキシ IP が利用可能であり、偽装することができ、必要な情報を取り戻すのにも役立つことを意味します.
私が使用した 4 つの異なるプロキシ IP を見てみましょう。これらはすべて有効です。
有効になっていない問題のトラブルシューティング
それでもローカル アドレスを返す場合は、99% が次の 2 つのいずれかを試します。
1. 要求プロトコルが一致しません
簡単に言えば、http を要求する場合は http プロトコルを使用する必要があり、https である場合は https プロトコルを使用する必要があります。
リクエストが http で https のみの場合、ローカル IP が使用されます。
要は、入手したエージェントが両方に対応しているということですが、私のように設定しなければならないのは鳥を買うようなもので、飛ばす余地を与えないと飛べないのは当然です。これは私たちのものです。
2. プロキシの失敗
これは私たちの問題ではありません。いわゆる安いものは良くない、良いものは安くはありません。大規模な爬虫類が本当に必要な場合は、プロキシ IP を購入することをお勧めします.オンライン広告を使用するプロキシには、実際の費用対効果が少し低いものがあります.私がよく使用するものは既に共有しており、あまりお勧めしません.私がそれらを知らない場合。
もちろん、あなたが趣味であれば、インターネットでフリーエージェントを見つけてプレイすることもできますが、その効果は実際にはあまり良くありません。. . . .