LINUX.ORG.RU

Почему блокируется краулер?

 , ,


1

1

помогите пожалуйста понять причину, по которой сайт avito блокирует мой парсер.

я использовал proxy, притворялся через user-agent, включал VPN, отключал куки, использовал искусственные задержки для каждой новой странички. но в результате после нескольких успешных парсингов, avito начал блокировать моего паука.

мне хотелось бы понять причину, с которой нужно бороться. вот лог:

(scrapy_3) md@md ~/.MINT18/code/python/parsers/scrapy_3/zaz $ scrapy crawl zaz -o zaz.json
2020-02-11 23:29:19 [scrapy.utils.log] INFO: Scrapy 1.8.0 started (bot: zaz)
2020-02-11 23:29:19 [scrapy.utils.log] INFO: Versions: lxml 4.5.0.0, libxml2 2.9.10, cssselect 1.1.0, parsel 1.5.2, w3lib 1.21.0, Twisted 19.10.0, Python 3.8.1 (default, Dec 31 2019, 18:44:59) - [GCC 5.4.0 20160609], pyOpenSSL 19.1.0 (OpenSSL 1.1.1d  10 Sep 2019), cryptography 2.8, Platform Linux-4.10.0-38-generic-x86_64-with-glibc2.17
2020-02-11 23:29:19 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'zaz', 'DOWNLOAD_DELAY': 0.1, 'EDITOR': 'subl', 'FEED_EXPORT_ENCODING': 'utf-8', 'FEED_FORMAT': 'json', 'FEED_URI': 'zaz.json', 'NEWSPIDER_MODULE': 'zaz.spiders', 'SPIDER_MODULES': ['zaz.spiders'], 'USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0'}
2020-02-11 23:29:19 [scrapy.extensions.telnet] INFO: Telnet Password: 4d67392473cfbe43
2020-02-11 23:29:19 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.memusage.MemoryUsage',
 'scrapy.extensions.feedexport.FeedExporter',
 'scrapy.extensions.logstats.LogStats']
2020-02-11 23:29:19 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2020-02-11 23:29:19 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware']
2020-02-11 23:29:19 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2020-02-11 23:29:19 [scrapy.core.engine] INFO: Spider opened
2020-02-11 23:29:19 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2020-02-11 23:29:19 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2020-02-11 23:29:20 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.avito.ru/rossiya/avtomobili?q=%D0%B7%D0%B0%D0%BF%D0%BE%D1%80%D0%BE%D0%B6%D0%B5%D1%86> (referer: None)
2020-02-11 23:29:20 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://www.avito.ru/penza/avtomobili/zaz_965_zaporozhets_1966_1780869575> (failed 1 times): Connection was refused by other side: 111: Connection refused.
2020-02-11 23:29:21 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://www.avito.ru/mariy_el_sovetskiy/avtomobili/zaz_965_zaporozhets_1969_1248912421> (failed 1 times): Connection was refused by other side: 111: Connection refused.
2020-02-11 23:29:21 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://www.avito.ru/sankt-peterburg/avtomobili/zaz_968_zaporozhets_1990_1828795956> (failed 1 times): Connection was refused by other side: 111: Connection refused.
2020-02-11 23:29:21 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://www.avito.ru/gorki-10/avtomobili/zaz_968_zaporozhets_1993_697246919> (failed 1 times): Connection was refused by other side: 111: Connection refused.
...
...
...
...
...
...
...
twisted.internet.error.ConnectionRefusedError: Connection was refused by other side: 111: Connection refused.
2020-02-11 23:29:39 [scrapy.downloadermiddlewares.retry] DEBUG: Gave up retrying <GET https://www.avito.ru/voronezh/avtomobili/zaz_968_zaporozhets_1993_1836536727> (failed 3 times): Connection was refused by other side: 111: Connection refused.
2020-02-11 23:29:39 [scrapy.core.scraper] ERROR: Error downloading <GET https://www.avito.ru/voronezh/avtomobili/zaz_968_zaporozhets_1993_1836536727>
Traceback (most recent call last):
  File "/home/md/.local/share/virtualenvs/scrapy_3-V2DXPfVH/lib/python3.8/site-packages/scrapy/core/downloader/middleware.py", line 44, in process_request
    defer.returnValue((yield download_func(request=request, spider=spider)))
twisted.internet.error.ConnectionRefusedError: Connection was refused by other side: 111: Connection refused.
2020-02-11 23:29:39 [scrapy.core.engine] INFO: Closing spider (finished)
2020-02-11 23:29:39 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/exception_count': 150,
 'downloader/exception_type_count/twisted.internet.error.ConnectionRefusedError': 150,
 'downloader/request_bytes': 114788,
 'downloader/request_count': 151,
 'downloader/request_method_count/GET': 151,
 'downloader/response_bytes': 161798,
 'downloader/response_count': 1,
 'downloader/response_status_count/200': 1,
 'elapsed_time_seconds': 19.726251,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2020, 2, 11, 20, 29, 39, 464574),
 'log_count/DEBUG': 151,
 'log_count/ERROR': 50,
 'log_count/INFO': 10,
 'memusage/max': 52711424,
 'memusage/startup': 52711424,
 'request_depth_max': 1,
 'response_received_count': 1,
 'retry/count': 100,
 'retry/max_reached': 50,
 'retry/reason_count/twisted.internet.error.ConnectionRefusedError': 100,
 'scheduler/dequeued': 151,
 'scheduler/dequeued/memory': 151,
 'scheduler/enqueued': 151,
 'scheduler/enqueued/memory': 151,
 'start_time': datetime.datetime(2020, 2, 11, 20, 29, 19, 738323)}
2020-02-11 23:29:39 [scrapy.core.engine] INFO: Spider closed (finished)

если нужно, то вот исходный код: https://github.com/zlodiak/avito_zaz/blob/master/zaz/zaz/spiders/zaz_spider.py


отключал куки

Ходит тут нечто и не использует куки. Бот вестимо, айда заблочим.

Я не знаю, что конкретно делает скрэпи, но, вероятно, на клиенте нужно исполнять JS, мб он что-то отсылает, что идентифицирует юзера как живого. Можно отреверсить и отправлять это самостоятельно. Либо же, моя традиционная рекомендация на лоре — puppeteer, он будет неотличим от живого юзера.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

puppeteer, он будет неотличим от живого юзера

+1

Теперь только его и использую, когда нужно распарсить какой-либо ресурс

Ford_Focus ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.