Извините, если это сбивает с толку.
Я написал скрипт, используя модуль запросов 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,