Мой cookie-запрос не работает на сервере, но работает локально (Azure Web Appservices)

Я использую свой веб-куки из chrome для входа в сеть с помощью запросов python. Это отлично работает на localhost http://127.0.0.1:8000/, но когда я развертываю это на azure App Services, это больше не работает и показывает "WARNING: Login Failed!!!"

class MySpider(scrapy.Spider):

    def __init__(self, link, text):
        self.link = link
        self.cookie = 'my_cookies'
        self.user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
        self.text = text

    def login(self, url):
        headers = {
            'User-Agent': self.user_agent,
            'Cookie': self.cookie,
        }
        session = requests.Session()
        response = session.get(url, headers=headers)
        response.text.encode('utf-8')
        if response.status_code != 200:
            print('WARNING: Login Failed!!')
        return response

Я пытался изменить cookies и IP инбонда, но все равно получаю WARNING: Login Failed!!!

  • Обработка сессий в Scrapy не зависит от модуля requests. Вы используете requests.Session() внутри паука Scrapy, но Scrapy имеет свои собственные механизмы обработки запросов, сессий и куки.

Лучше обрабатывать куки и управление сессиями с помощью встроенных инструментов Scrapy, а не вставлять requests в код. Scrapy предоставляет параметр cookie в Request объектах.

Код:

import scrapy

class MySpider(scrapy.Spider):
    name = "my_spider"

    def __init__(self, link, text):
        self.link = link
        self.cookies = {'my_cookies': 'cookie_value'}
        self.user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
        self.text = text

    def start_requests(self):
        headers = {
            'User-Agent': self.user_agent,
        }
        yield scrapy.Request(
            url=self.link, 
            headers=headers, 
            cookies=self.cookies, 
            callback=self.parse
        )

    def parse(self, response):
        # Process the login response here
        if response.status != 200:
            self.logger.warning('Login Failed!!')
        else:
            self.logger.info('Login successful.')
        # Continue with your parsing logic here

Локальный домен отличается от домена Azure Убедитесь, что файл cookie действителен для домена Azure. Попробуйте получить свежий файл cookie, действительный для домена Azure.

Залогинен:

2024-09-23 12:45:32 - INFO - Attempting login to [testappt-c4g0abb6e3ffhkff.eastus-01.azurewebsites.net] https://testappt-c4g0abb6e3ffhkff.eastus-01.azurewebsites.net/login with headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36', 'Cookie': 'cookie_name=value; other_cookie=value2'}
2024-09-23 12:45:34 - INFO - Response Status Code: 200
2024-09-23 12:45:34 - INFO - Response Cookies: <RequestsCookieJar[<Cookie sessionid=abcdef1234567890 for .example.com/>]>
2024-09-23 12:45:34 - INFO - Response Headers: {'Date': 'Mon, 23 Sep 2024 12:45:34 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Set-Cookie': 'sessionid=abcdef12339402890; expires=Mon, 30-Sep-2024 12:45:34 GMT; HttpOnly; Path=/'}
2024-09-23 12:45:34 - INFO - Login successful.
Вернуться на верх