403 抓取网站时出现禁止错误,用户代理已使用并更新。有什么想法吗?

问题描述 投票:0回答:2

正如上面的标题所述,我收到 403 错误。生成的 URL 是有效的,我可以打印它们,然后在浏览器中打开它们就可以了。

我有一个用户代理,它与我的浏览器在访问我想直接从 Chrome 开发工具中抓取的页面时发送的用户代理完全相同。我尝试过使用会话而不是直接请求,我尝试过使用 urllib,并且我尝试过使用通用 request.get。

这是我正在使用的代码,即 403。与 request.get 等结果相同。

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36'}

session = requests.Session()
req = session.get(URL, headers=headers)

所以,是的,我假设我没有创建用户代理写入,所以它可以告诉我正在抓取。但我不确定我错过了什么,或者如何找到它。

python web-scraping beautifulsoup
2个回答
3
投票

我从 DevTools 获取了所有标头,然后开始一一删除标头,我发现它只需要

Accept-Language
并且不需要
User-Agent
并且不需要 Session。

import requests

url = 'https://www.g2a.com/lucene/search/filter?&search=The+Elder+Scrolls+V:+Skyrim&currency=nzd&cc=NZD'

headers = {
    'Accept-Language': 'en-US;q=0.7,en;q=0.3',
}

r = requests.get(url, headers=headers)

data = r.json()

print(data['docs'][0]['name'])

结果:

The Elder Scrolls V: Skyrim Special Edition Steam Key GLOBAL

1
投票

添加一些标题如下(不仅是

User-Agent
):

def start_requests(self):
    headers = {        
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',        
        'Accept-Encoding': 'gzip, deflate, br',        
        'Accept-Language': 'en-US,en;q=0.5',        
        'Connection': 'keep-alive',        
        'Cookie': 'AMCV_0D15148954E6C5100A4C98BC%40AdobeOrg=1176715910%7CMCIDTS%7C19271%7CMCMID%7C80534695734291136713728777212980602826%7CMCAAMLH-1665548058%7C7%7CMCAAMB-1665548058%7C6G1ynYcLPuiQxYZrsz_pkqfLG9yMXBpb2zX5dvJdYQJzPXImdj0y%7CMCOPTOUT-1664950458s%7CNONE%7CMCAID%7CNONE%7CMCSYNCSOP%7C411-19272%7CvVersion%7C5.4.0; s_ecid=MCMID%7C80534695734291136713728777212980602826; __cfruid=37ff2049fc4dcffaab8d008026b166001c67dd49-1664418998; AMCVS_0D15148954E6C5100A4C98BC%40AdobeOrg=1; s_cc=true; __cf_bm=NIDFoL5PTkinis50ohQiCs4q7U4SZJ8oTaTW4kHT0SE-1664943258-0-AVwtneMLLP997IAVfltTqK949EmY349o8RJT7pYSp/oF9lChUSNLohrDRIHsiEB5TwTZ9QL7e9nAH+2vmXzhTtE=; PHPSESSID=ddf49facfda7bcb4656eea122199ea0d',                        
        'If-Modified-Since': 'Tue, 04 May 2021 05:09:49 GMT',        
        'If-None-Match': 'W/"12c6a-5c17a16600f6c-gzip"',        
        'Sec-Fetch-Dest': 'document',        
        'Sec-Fetch-Mode': 'navigate',        
        'Sec-Fetch-Site': 'none',        
        'Sec-Fetch-User': '?1',        
        'TE': 'trailers',        
        'Upgrade-Insecure-Requests': '1',        
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0'        
    }
    for url in self.start_urls:
        yield Request(url, headers=headers)
© www.soinside.com 2019 - 2024. All rights reserved.