武器の選択:無料で使えるプロキシ
デジタル・アゴラにおいて、プロキシは儚い歩哨として立ちはだかる。匿名性、自由、そして悲しいかな、脆さへの入り口である。自由なプロキシという捉えどころのない存在は、通過路を提供するものの、その代償は不安定さ、抑制、あるいは最悪のシナリオでは裏切りとなる。デカルト的な明晰さをもって、この状況を考察してみよう。
プロキシタイプ | 匿名 | スピード | 信頼性 | ソース例 |
---|---|---|---|---|
HTTP/HTTPSプロキシ | 中くらい | 適度 | 低い | https://free-proxy-list.net/ |
SOCKS4/5プロキシ | 高い | 低い | 非常に低い | https://socks-proxy.net/ |
透過プロキシ | なし | 速い | 低い | https://spys.one/ |
警告: 無料プロキシは公開されており、セキュリティが侵害される可能性があります。認証情報や機密データをプロキシ経由で送信しないでください。
プロキシの収穫:儀式
はかないものとのダンスは自動化を必要とする。Pythonとその信奉者たちを呼び起こそう。 リクエスト
そして 美しいスープ
、プロキシを取得します:
bs4からrequestsをインポートします。import BeautifulSoup def fetch_proxies(): url = 'https://free-proxy-list.net/' soup = BeautifulSoup(requests.get(url).content, 'html.parser') proxies = [] for row in soup.find('table', id='proxylisttable').tbody.find_all('tr'): tds = row.find_all('td') if tds[6].text == 'yes': # HTTPSのみ proxy = f"{tds[0].text}:{tds[1].text}" proxies.append(proxy) return proxies
回転するプロキシ:変装の芸術
AmazonとeBayといったデジタル要塞は、機械的な精度でバンハンマーを振り回している。その解決策は?プロキシをローテーションさせ、ユーザーエージェントを変更し、遅延を発生させる――まさにミスディレクションの演出だ。
import random import time proxies = fetch_proxies() user_agents = [ # ユーザーエージェントのブーケ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)...', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...', # さらに追加 ] def get_random_headers(): return {'User-Agent': random.choice(user_agents)} def get_random_proxy(): return {'http': f"http://{random.choice(proxies)}", 'https': f"http://{random.choice(proxies)}"} def request_with_proxy(url): for attempt in range(5): proxy = get_random_proxy() headers = get_random_headers() try: response = request.get(url, headers=headers、proxies=proxy、timeout=5) response.status_code == 200の場合: response.textを返す。ただし、例外が発生する場合は、time.sleep(random.uniform(1, 3))を続行する。Noneを返す。
Amazonスクレイピング:迷宮を抜け出す
Amazonはボット対策として、CAPTCHA、動的コンテンツ、IPアドレスの制限などを導入しています。小規模なスクレイピングの場合は商品リストに重点を置き、それ以上の規模の場合は倫理的制限と法的限界を考慮する必要があります。
例: 製品タイトルの抽出
bs4からインポート BeautifulSoup def scrape_amazon_product_title(asin): url = f"https://www.amazon.com/dp/{asin}" html = request_with_proxy(url) if not html: print("ページの取得に失敗しました。") return None soup = BeautifulSoup(html, 'html.parser') title = soup.find('span', id='productTitle') return title.text.strip() if title else None asin = 'B08N5WRWNW' # ASINの例 print(scrape_amazon_product_title(asin))
eBayのスクレイピング:バザールを通して
eBayはそれほど警戒心が強くないサイトですが、レート制限とボット検出は依然として導入されています。それほど厳しくはありませんが、それでも対策は存在します。商品ページ(例:https://www.ebay.com/itm/ITEMID)に注目してください。
例: 商品価格の抽出
def scrape_ebay_price(item_id): url = f"https://www.ebay.com/itm/{item_id}" html = request_with_proxy(url) if not html: print("ページの取得に失敗しました。") return None soup = BeautifulSoup(html, 'html.parser') price = soup.find('span', id='prcIsum') return price.text.strip() if price else None item_id = '234567890123' # 商品IDの例 print(scrape_ebay_price(item_id))
難読化:回避の詩
- リクエスト間隔をランダム化します:
パイソン
時間.睡眠(ランダム.均一(2, 6)) - プロキシとユーザーエージェントをシャッフルする リクエストごとに。
- プロキシを一時停止または切り替える HTTP 503、403、または CAPTCHA 検出時。
制限と法的事項:
サイト | 最大リクエスト数/時間(推定) | 主な対策 |
---|---|---|
アマゾン | ~50-100 | キャプチャ、IP禁止、JSチェック |
イーベイ | ~200-300 | レート制限、キャプチャ |
ベストプラクティス:
- 使用する前にプロキシの生存をテストします (多くは数時間以内に死にます)。
- robots.txt を尊重してください。禁止されている場所には侵入しないでください。
- 同時実行を制限します (フリープロキシによるスレッドストームを回避します)。
- 適切に解析します。サイトのレイアウトは春の下草のように変化します。
ツールとライブラリ:
タスク | 推奨ツール |
---|---|
プロキシスクレイピング | 美しいスープ |
HTTPリクエスト | リクエスト、httpx |
解析 | BeautifulSoup、lxml |
プロキシローテーション | リクエスト + カスタム |
サンプルのプロキシ検証ルーチン:
def validate_proxy(proxy): try: r = request.get('https://httpbin.org/ip', proxies={'http': proxy, 'https': proxy}, timeout=3) return r.status_code == 200 except: return False proxies = [p for p in proxies if validate_proxy(p)]
持続性に関する最後の注意:
無料プロキシでスクレイピングするのは、地平線を追いかけるようなものです。常に変化し、常に手の届かないところにあります。ローテーションし、適応し、そして一つ一つのリクエストがデジタルコマースの大海原の一滴であることを決して忘れないでください。ウェブは生き物です。そのように扱えば、まだ秘密が明かされるかもしれません。
コメント (0)
まだコメントはありません。あなたが最初のコメントを投稿できます!