Scrapy: ошибка 403 на все запросы - PullRequest
0 голосов
/ 26 мая 2018

Мой сканер scrapy использует случайные прокси и работает на моем компьютере.Но когда я запускаю его на VPS, он возвращает ошибку 403. При каждом запросе.

2018-05-26 09:43:18 [scrapy.proxies] DEBUG: Proxy user pass not found
2018-05-26 09:43:18 [scrapy.proxies] DEBUG: Using proxy <http://104.237.210.29:2716>, 20 proxies left
2018-05-26 09:43:19 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET http://www.yelp.com/> (failed 1 times): 403 Forbidden
2018-05-26 09:43:19 [scrapy.proxies] DEBUG: Proxy user pass not found
2018-05-26 09:43:19 [scrapy.proxies] DEBUG: Using proxy <http://104.237.210.173:5195>, 20 proxies left
2018-05-26 09:43:19 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET http://www.yelp.com/> (failed 1 times): 403 Forbidden
2018-05-26 09:43:19 [scrapy.proxies] DEBUG: Proxy user pass not found
2018-05-26 09:43:19 [scrapy.proxies] DEBUG: Using proxy <http://104.237.210.93:3410>, 20 proxies left
2018-05-26 09:43:19 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET http://www.yelp.com/> (failed 1 times): 403 Forbidden

Я вручную проверил прокси на Firefox на VPS, и я могу получить доступ к веб-сайтам без каких-либо ошибок.

Это мои настройки, они такие же, как на моем компьютере:

DOWNLOADER_MIDDLEWARES = {
   # 'monitor.middlewares.MonitorDownloaderMiddleware': 543,
   # Proxies
    'scrapy.downloadermiddlewares.retry.RetryMiddleware': 90,
    'scrapy_proxies.RandomProxy': 100,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,
    # Proxies end
    # Useragent
    'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,
    'random_useragent.RandomUserAgentMiddleware': 400,
    # Useragent end
}

# Random useragent list
USER_AGENT_LIST = r"C:\Users\Administrator\Desktop\useragents.txt"

# Retry many times since proxies often fail
RETRY_TIMES = 5
# Retry on most error codes since proxies fail for different reasons
RETRY_HTTP_CODES = [500, 503, 504, 400, 403, 404, 408]

# Proxy list containing entries like
# http://host1:port
# http://username:password@host2:port
# http://host3:port
PROXY_LIST = r"C:\Users\Administrator\Desktop\proxies.txt"

# Proxy mode
# 0 = Every requests have different proxy
# 1 = Take only one proxy from the list and assign it to every requests
# 2 = Put a custom proxy to use in the settings
PROXY_MODE = 0

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Иногда вы получаете 403, потому что robots.txt запрещает роботов на всем веб-сайте или на части сайта, которую вы удаляете.

Затем, прежде всего, напишите в settings.py ROBOTSTXT_OBEY = False.Я не вижу его в ваших настройках здесь.

Не считайте robots.txt в целом недостаточно.Вы должны создать свой пользовательский агент как обычный браузер, также в файле settings.py.Например: USER_AGENT='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7' Лучше всего создать список параметров пользовательского агента в настройках, например, так:

USER_AGENT_LIST = [
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7',
    ...,
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10'
]

Вы, кажется, сделали это.Затем, чтобы сделать это случайным, и вы, кажется, тоже.

Наконец, это не обязательно, но я позволю вам увидеть, полезно ли это вам, написать DOWNLOAD_DELAY = 3 в settings.py, где значение1 по крайней мере.Идеал - сделать это случайным.Это делает ваш паук, действующий как браузер.Насколько я знаю, слишком быстрая задержка загрузки может заставить сайт понять, что это робот, созданный с помощью поддельного пользовательского агента.Если у веб-мастера большой опыт, он разрабатывает правила с множеством барьеров для защиты своего сайта от роботов.

Сегодня утром я проверил его на ту же проблему, что и у вас, в моей оболочке scrapy.Я надеюсь, что это будет полезно для вас.

0 голосов
/ 26 мая 2018

Не уверен, в чем проблема, но нашел много людей с проблемами, использующими scrapy_proxies.Вместо этого я использую прокси-вращающиеся прокси .Он поддерживается kmike , который также поддерживает Scrapy Framework, так что я думаю, что лучше.

...