Rumah pembangunan bahagian belakang Tutorial Python Menggunakan IP proksi dan strategi anti-merangkak dalam perangkak Scrapy

Menggunakan IP proksi dan strategi anti-merangkak dalam perangkak Scrapy

Jun 23, 2023 am 11:24 AM
ip proksi Strategi anti-crawler scrapy

Gunakan IP proksi dan strategi anti perangkak dalam perangkak Scrapy

Dalam beberapa tahun kebelakangan ini, dengan perkembangan Internet, semakin banyak data perlu diperoleh melalui perangkak dan strategi anti perangkak untuk perangkak telah menjadi lebih dan lebih penting. Dalam banyak senario, menggunakan IP proksi dan strategi anti-perangkak telah menjadi kemahiran penting untuk pembangun perangkak. Dalam artikel ini, kami akan membincangkan cara menggunakan IP proksi dan strategi anti-rangkak dalam perangkak Scrapy untuk memastikan kestabilan dan kadar kejayaan data rangkak.

1. Mengapa anda perlu menggunakan IP proksi

Apabila perangkak melawat tapak web yang sama, mereka sering dikenal pasti sebagai alamat IP yang sama, yang boleh disekat atau disekat dengan mudah. Untuk mengelakkan perkara ini daripada berlaku, IP proksi perlu digunakan untuk menyembunyikan alamat IP sebenar dan dengan itu melindungi identiti perangkak dengan lebih baik.

2. Cara menggunakan IP proksi

Menggunakan IP proksi dalam Scrapy boleh dicapai dengan menetapkan atribut DOWNLOADER_MIDDLEWARES dalam fail settings.py.

  1. Tambah kod berikut dalam fail settings.py:
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
    'your_project.middlewares.RandomUserAgentMiddleware': 400,
    'your_project.middlewares.RandomProxyMiddleware': 410,
}
Salin selepas log masuk
  1. Tentukan kelas RandomProxyMiddleware dalam fail middlewares.py untuk melaksanakan fungsi IP proksi rawak :
import requests
import random


class RandomProxyMiddleware(object):
    def __init__(self, proxy_list_path):
        with open(proxy_list_path, 'r') as f:
            self.proxy_list = f.readlines()

    @classmethod
    def from_crawler(cls, crawler):
        settings = crawler.settings
        return cls(settings.get('PROXY_LIST_PATH'))

    def process_request(self, request, spider):
        proxy = random.choice(self.proxy_list).strip()
        request.meta['proxy'] = "http://" + proxy
Salin selepas log masuk

Antaranya, laluan ke senarai IP proksi perlu ditetapkan dalam fail settings.py:

PROXY_LIST_PATH = 'path/to/your/proxy/list'
Salin selepas log masuk

Apabila merangkak, Scrapy akan memilih IP proksi secara rawak untuk akses, oleh itu Ini memastikan penyembunyian identiti dan kadar kejayaan merangkak.

3. Perihal strategi anti perangkak

Pada masa ini, strategi anti perangkak untuk tapak web adalah sangat biasa, bermula daripada pertimbangan Agen Pengguna yang mudah kepada kod pengesahan yang lebih kompleks dan pengesahan peluncur. Di bawah, kami akan membincangkan cara menangani beberapa strategi anti-rangkak biasa dalam perangkak Scrapy.

  1. anti perangkak Ejen-Pengguna

Untuk menghalang capaian perangkak, tapak web sering menentukan medan Ejen Pengguna Jika Ejen Pengguna bukan kaedah penyemak imbas , ia akan memintasnya. Oleh itu, kita perlu menetapkan Agen Pengguna rawak dalam perangkak Scrapy untuk mengelakkan Agen Pengguna dikenali sebagai perangkak.

Di bawah middlewares.py, kami mentakrifkan kelas RandomUserAgentMiddleware untuk melaksanakan fungsi User-Agent rawak:

import random
from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware


class RandomUserAgentMiddleware(UserAgentMiddleware):
    def __init__(self, user_agent):
        self.user_agent = user_agent

    @classmethod
    def from_crawler(cls, crawler):
        s = cls(crawler.settings.get('user_agent', 'Scrapy'))
        crawler.signals.connect(s.spider_closed, signal=signals.spider_closed)
        return s

    def process_request(self, request, spider):
        ua = random.choice(self.user_agent_list)
        if ua:
            request.headers.setdefault('User-Agent', ua)
Salin selepas log masuk

Pada masa yang sama, tetapkan senarai User-Agent dalam fail settings.py:

USER_AGENT_LIST = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36']
Salin selepas log masuk
  1. IP Anti-Crawler

Untuk menghalang sejumlah besar permintaan daripada alamat IP yang sama, tapak web mungkin mengehadkan permintaan daripada alamat IP yang sama atau melarang akses. Untuk situasi ini, kami boleh menggunakan IP proksi untuk mengelakkan anti-perakak IP dengan menukar alamat IP secara rawak.

  1. Kuki dan Anti-Perangka Sesi

Tapak web boleh menyediakan Kuki dan Sesi untuk mengenal pasti permintaan Kaedah ini selalunya terikat pada akaun dan juga Kekerapan permintaan setiap akaun akan terhad. Oleh itu, kami perlu mensimulasikan Kuki dan Sesi dalam perangkak Scrapy untuk mengelak daripada dikenal pasti sebagai permintaan yang menyalahi undang-undang.

Dalam fail settings.py Scrapy, kami boleh mengkonfigurasi yang berikut:

COOKIES_ENABLED = True
COOKIES_DEBUG = True
Salin selepas log masuk

Pada masa yang sama, tentukan kelas CookieMiddleware dalam fail middlewares.py untuk mensimulasikan fungsi Cookies:

from scrapy.exceptions import IgnoreRequest


class CookieMiddleware(object):
    def __init__(self, cookies):
        self.cookies = cookies

    @classmethod
    def from_crawler(cls, crawler):
        return cls(
            cookies=crawler.settings.getdict('COOKIES')
        )

    def process_request(self, request, spider):
        request.cookies.update(self.cookies)
Salin selepas log masuk

Antaranya, tetapan COOKIES adalah seperti berikut:

COOKIES = {
    'cookie1': 'value1',
    'cookie2': 'value2',
    ...
}
Salin selepas log masuk

Kuki hendaklah ditambahkan pada medan kuki permintaan sebelum permintaan dihantar. Jika permintaan itu tidak membawa kuki, ia mungkin dikenal pasti sebagai permintaan yang tidak sah oleh tapak web.

4. Ringkasan

Di atas ialah pengenalan kepada penggunaan IP proksi dan strategi anti perangkak dalam perangkak Scrapy Menggunakan IP proksi dan strategi anti perangkak adalah cara penting untuk menghalang perangkak daripada disekat dan diharamkan. Sudah tentu, strategi anti-crawler muncul tanpa henti, dan kami perlu menangani strategi anti-crawler yang berbeza dengan sewajarnya.

Atas ialah kandungan terperinci Menggunakan IP proksi dan strategi anti-merangkak dalam perangkak Scrapy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Scrapy melaksanakan rangkak dan analisis artikel akaun awam WeChat Scrapy melaksanakan rangkak dan analisis artikel akaun awam WeChat Jun 22, 2023 am 09:41 AM

Scrapy melaksanakan rangkak artikel dan analisis akaun awam WeChat WeChat ialah aplikasi media sosial yang popular dalam beberapa tahun kebelakangan ini, dan akaun awam yang dikendalikan di dalamnya juga memainkan peranan yang sangat penting. Seperti yang kita sedia maklum, akaun awam WeChat adalah lautan maklumat dan pengetahuan, kerana setiap akaun awam boleh menerbitkan artikel, mesej grafik dan maklumat lain. Maklumat ini boleh digunakan secara meluas dalam banyak bidang, seperti laporan media, penyelidikan akademik, dsb. Jadi, artikel ini akan memperkenalkan cara menggunakan rangka kerja Scrapy untuk merangkak dan menganalisis artikel akaun awam WeChat. Scr

Analisis kes buruk: Cara merangkak maklumat syarikat di LinkedIn Analisis kes buruk: Cara merangkak maklumat syarikat di LinkedIn Jun 23, 2023 am 10:04 AM

Scrapy ialah rangka kerja perangkak berasaskan Python yang boleh mendapatkan maklumat berkaitan dengan cepat dan mudah di Internet. Dalam artikel ini, kami akan menggunakan kes Scrapy untuk menganalisis secara terperinci cara merangkak maklumat syarikat di LinkedIn. Tentukan URL sasaran Mula-mula, kita perlu menjelaskan dengan jelas bahawa sasaran kita ialah maklumat syarikat di LinkedIn. Oleh itu, kita perlu mencari URL halaman maklumat syarikat LinkedIn. Buka laman web LinkedIn, masukkan nama syarikat dalam kotak carian, dan

Kaedah pelaksanaan pemuatan asynchronous Scrapy berdasarkan Ajax Kaedah pelaksanaan pemuatan asynchronous Scrapy berdasarkan Ajax Jun 22, 2023 pm 11:09 PM

Scrapy ialah rangka kerja perangkak Python sumber terbuka yang boleh mendapatkan data daripada tapak web dengan cepat dan cekap. Walau bagaimanapun, banyak tapak web menggunakan teknologi pemuatan tak segerak Ajax, menjadikannya mustahil untuk Scrapy mendapatkan data secara langsung. Artikel ini akan memperkenalkan kaedah pelaksanaan Scrapy berdasarkan pemuatan tak segerak Ajax. 1. Prinsip pemuatan tak segerak Ajax Pemuatan tak segerak Ajax: Dalam kaedah pemuatan halaman tradisional, selepas pelayar menghantar permintaan kepada pelayan, ia mesti menunggu pelayan mengembalikan respons dan memuatkan keseluruhan halaman sebelum meneruskan ke langkah seterusnya.

Petua pengoptimuman buruk: Cara mengurangkan rangkak URL pendua dan meningkatkan kecekapan Petua pengoptimuman buruk: Cara mengurangkan rangkak URL pendua dan meningkatkan kecekapan Jun 22, 2023 pm 01:57 PM

Scrapy ialah rangka kerja perangkak Python yang berkuasa yang boleh digunakan untuk mendapatkan sejumlah besar data daripada Internet. Walau bagaimanapun, apabila membangunkan Scrapy, kami sering menghadapi masalah merangkak URL pendua, yang membuang banyak masa dan sumber serta menjejaskan kecekapan. Artikel ini akan memperkenalkan beberapa teknik pengoptimuman Scrapy untuk mengurangkan rangkak URL pendua dan meningkatkan kecekapan perangkak Scrapy. 1. Gunakan atribut start_urls dan allowed_domains dalam perangkak Scrapy untuk

Menggunakan Selenium dan PhantomJS dalam perangkak Scrapy Menggunakan Selenium dan PhantomJS dalam perangkak Scrapy Jun 22, 2023 pm 06:03 PM

Menggunakan Selenium dan PhantomJSScrapy dalam perangkak Scrapy Scrapy ialah rangka kerja perangkak web yang sangat baik di bawah Python dan telah digunakan secara meluas dalam pengumpulan dan pemprosesan data dalam pelbagai bidang. Dalam pelaksanaan perangkak, kadangkala perlu untuk mensimulasikan operasi penyemak imbas untuk mendapatkan kandungan yang dibentangkan oleh tapak web tertentu Dalam kes ini, Selenium dan PhantomJS diperlukan. Selenium mensimulasikan operasi manusia pada penyemak imbas, membolehkan kami mengautomasikan ujian aplikasi web

Penggunaan Scrapy yang mendalam: Bagaimana untuk merangkak data HTML, XML dan JSON? Penggunaan Scrapy yang mendalam: Bagaimana untuk merangkak data HTML, XML dan JSON? Jun 22, 2023 pm 05:58 PM

Scrapy ialah rangka kerja perangkak Python yang berkuasa yang boleh membantu kami mendapatkan data di Internet dengan cepat dan fleksibel. Dalam proses merangkak sebenar, kami sering menghadapi pelbagai format data seperti HTML, XML dan JSON. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Scrapy untuk merangkak ketiga-tiga format data ini masing-masing. 1. Merangkak data HTML dan mencipta projek Scrapy Pertama, kita perlu membuat projek Scrapy. Buka baris arahan dan masukkan arahan berikut: scrapys

Bagaimanakah Scrapy melaksanakan kontena dan penggunaan Docker? Bagaimanakah Scrapy melaksanakan kontena dan penggunaan Docker? Jun 23, 2023 am 10:39 AM

Memandangkan aplikasi Internet moden terus berkembang dan meningkat dalam kerumitan, perangkak web telah menjadi alat penting untuk pemerolehan dan analisis data. Sebagai salah satu rangka kerja perangkak paling popular dalam Python, Scrapy mempunyai fungsi yang berkuasa dan antara muka API yang mudah digunakan, yang boleh membantu pembangun merangkak dan memproses data halaman web dengan cepat. Walau bagaimanapun, apabila berhadapan dengan tugas merangkak berskala besar, satu contoh perangkak Scrapy mudah dihadkan oleh sumber perkakasan, jadi Scrapy biasanya perlu disimpan dalam bekas dan digunakan ke bekas Docker.

Amalan perangkak buruk: data ruang QQ merangkak untuk analisis rangkaian sosial Amalan perangkak buruk: data ruang QQ merangkak untuk analisis rangkaian sosial Jun 22, 2023 pm 02:37 PM

Dalam beberapa tahun kebelakangan ini, terdapat peningkatan permintaan untuk analisis rangkaian sosial. Zon QQ ialah salah satu rangkaian sosial terbesar di China, dan rangkak dan analisis datanya amat penting untuk penyelidikan rangkaian sosial. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Scrapy untuk merangkak data QQ Space dan melakukan analisis rangkaian sosial. 1. Pengenalan kepada Scrapy Scrapy ialah rangka kerja rangkak web sumber terbuka berdasarkan Python Ia boleh membantu kami dengan cepat dan cekap mengumpul data tapak web melalui mekanisme Spider, memproses dan menyimpannya. S

See all articles