Python请求403 Forbidden状态码问题

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

我尝试使用 python requests 模块注册到网站,但我收到 403 状态问题,这意味着我认为有错误。

网站:https://getir.com/

代码:

import os
import requests

global numer
global countryCode
global countryNumber

number = "5323214965"
countryCode = "90"
countryNumber = "+905323214965"

def main():

    header = {
        'content-type': 'application/json',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0'
        }

    with requests.Session() as s:

        page = s.get('https://getir.com/', headers=header)
        data = {'countryCode': countryCode, 'gsm': number}

        response = s.post('https://client-api-gateway.getirapi.com/client/send-otp', data)
        print(response.status_code)

main()

我在这里缺少什么?我应该怎么办?谢谢

python web-scraping python-requests python-requests-html
1个回答
0
投票

403 Forbidden 状态代码通常意味着服务器已识别您的请求但拒绝授权。在 Python 中使用 requests 模块时,可能会由于多种原因发生这种情况。

  • 某些网站需要 cookie 进行身份验证或会话管理。通过使用 requests.Session(),您就走在正确的轨道上,因为它会自动处理 cookie。确保您以模仿正常浏览器行为的方式与网站交互,例如在发出发布请求之前访问主页
  • 验证 API 端点预期 POST 请求以及是否要求数据采用 JSON 格式或表单编码。如果它需要 JSON(从您的代码来看,它看起来是这样),您应该将数据字典转换为 JSON 字符串并设置正确的内容类型标头。如果是表单数据,请确保以正确的格式发送。
  • 一些网站使用 CSRF 令牌来防止跨站请求伪造。如果网站使用 CSRF 令牌,您需要从网站上的页面获取令牌并将其包含在您的 POST 请求中。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.