Извините, если это покажется запутанным.
Я написал скрипт, используя модуль запроса NodeJS, который запускается и выполняет функцию на веб-сайте, а затем возвращает данные. Этот скрипт отлично работает, когда я не использую прокси-сервер, установив для него значение false. Это не та задача, которую НЕЛЬЗЯ выполнять с помощью Selenium/puppeteer.
proxy: false
Однако, когда я установил (рабочий) прокси. Он не выполняет ту же задачу и обнаруживается программным обеспечением брандмауэра/антибота веб-сайта.
proxy: http://xx.xxx.xx.xx:3128
Некоторые вещи, которые следует отметить:
- Я пробовал множество (более 20) разных поставщиков прокси-серверов (Residential и Datacenter), и у всех у них была эта проблема.
- Проблема не возникает, если этот прокси-сервер установлен глобально в моей системе.
- Проблема не возникает, если этот прокси установлен в расширении Chrome.
- Наборы шифров SSL не соответствуют Chrome, но они по-прежнему не совпадают, когда не используется прокси-сервер, поэтому я предполагаю, что проблема не в этом.
- Очень важно соблюдать последовательность в порядке заголовков.
Вопрос в принципе. Изменяет ли что-нибудь модуль запроса при использовании прокси, такого как порядок заголовков?
Вот изображение того, что происходит, когда он проходит/не проходит.
Единственная разница заключается в смене прокси-сервера, который приводит к сбою. Один запрос делается с, один запрос делается без.
url : url,
simple : false,
forever: true,
resolveWithFullResponse: true,
gzip: true,
headers: {
'Host' : 'www.sitename.com',
'Connection' : 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-encoding' : 'gzip, deflate, br',
'Accept-Language' : 'en-GB,en-US;q=0.9,en;q=0.8',
},
method : 'GET',
jar: globalJar,
simple: false,
followRedirect: false,
followAllRedirects: false,
proxy
- - person Marcos Casagrande   schedule 25.03.2019proxy: http://xx.xxx.xx.xx:3128
@MarcosCasagrande То, как это задокументировано в библиотеке запросов - person   schedule 25.03.2019X-Forwarded-For
. Вы можете использовать httpbin.org, чтобы увидеть, какие заголовки получает сервер. - person t.m.adam   schedule 31.03.2019