RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1415851
Accepted
Dmitriy Begishev
Dmitriy Begishev
Asked:2022-08-01 15:29:39 +0000 UTC2022-08-01 15:29:39 +0000 UTC 2022-08-01 15:29:39 +0000 UTC

如何获得正确的服务器响应(200)?

  • 772

创建了一个模拟在 Sbermarket 中将产品添加到购物车的小脚本。
当请求时,服务器返回:{"status":400,"error":"Bad Request"}

import requests


def send():
    '''Функция отправляет POST-запрос с id товара для отображения его 
       в корзине Сбермаркета
    ''' 
    r = requests.post(
            "https://sbermarket.ru/api/line_items", 
            headers={
                "Accept": "application/json, text/plain, */*", 
                "Accept-Encoding": "gzip, deflate, br", 
                "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
                "Connection": "keep-alive", 
                "Content-Length": "37",
                "Content-Type": "application/json;charset=utf-8",
                "Cookie": u"user-id_1.0.5_lr_lruid=pQ8AALZpUGI75zMFATpqTQA%3D; _ga=GA1.2.911227684.1646581779; tmr_reqNum=2966; external_analytics_anonymous_id=0817e773-6e48-4f65-a0ad-f15d2dc24499; _ga_XVJWMHHXNJ=GS1.1.1654069715.61.1.1654069772.0; _ga_9QYWDVGJZ3=GS1.1.1654069715.61.1.1654069772.3; rl_anonymous_id=RudderEncrypt%3AU2FsdGVkX19NEK4wQj43fKrFXyVFpUO8QsjTAinY07gsTGxKN3XWo5koV04QklVBYnRwhYsDbpufosWy%2FRpXQQ%3D%3D; rl_user_id=RudderEncrypt%3AU2FsdGVkX19hv2vUcNsAySl807Eu3ctZTeu4FQOIcUcMYhqdvFRK4k79k7%2FGHNUJ13%2BB07pBa2hXrdI%2…520; t2_sid_7588506=s1.2041514210.1654069713647.1654069806189.2.8.15.1; _ym_isad=1; identified_address=true; identified_user=true; siteEntryTime=Wed%20Jun%2001%202022%2011%3A41%3A26%20GMT%2B0400%20(%D0%A1%D0%B0%D0%BC%D0%B0%D1%80%D1%81%D0%BA%D0%BE%D0%B5%20%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%BE%D0%B5%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F); reachedTimer=1; _pk_ses.6.3ec0=1; sessionId=16540697170634384625-react-catalog; __exponea_time2__=-3607.2170147895813; _ym_visorc=w; _gat_UA-136687175-2=1".encode("cp1252"),
                "DNT": "1",
                "Host": "sbermarket.ru",
                "Origin": "https://sbermarket.ru",
                "Referer": "https://sbermarket.ru/metro?sid=21",
                "Sec-Fetch-Dest": "empty", 
                "Sec-Fetch-Mode": "cors",
                "Sec-Fetch-Site": "same-origin",
                "TE": "trailers",
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0",                 
                "X-CSRF-Token": "HuZH+C7Wkjg12qWXNSe9CSgz02tazvVFMXdrIZrfb/P9qWRPg+FuGmcf2U/S6DQK9sjCGKNFzXaUpcfhnn+5bw==",
                
                },
            data={"line_item":{"offer_id":"2246659337"}}
            )
    ola = r.status_code
    return ola  

if __name__ == "__main__":
    products = send()
    print(products)

如果我通过页面https://sbermarket.ru/metro?sid=21手动执行相同的操作,那么在开发人员工具控制台的响应中,我可以看到以下内容:

{"line_item":{"human_volume":"500 мл","id":1603684517,"image":"/spree/products/55923/mini/60045_1.jpg","name":"Вода питьевая Святой Источник негазированная 0,5 л","offer_id":12378766,"product_permalink":"voda-sviatoi-istochnik-nieghazirovannaia-5","quantity":1,"retailer_id":1,"shipment_id":224403137,"shipment_number":"H01121108787","small_image":"/spree/products/55923/small/60045_1.jpg?1639928321","sku":"60045","assembly_issue":null,"items_per_pack":1,"packs":1,"price":34.92,"price_type":"per_item","total":34.92,"unit_price":34.92,"unit_quantity":1.0,"offer_in_stock":true,"total_diff":0.0,"updated_at":"2022-06-01T10:12:28.000+03:00","uuid":"1c28f363-4718-44ca-8774-6b0d348a63e3","variant_id":55437,"vat_rate":20,"offer":{"active":true,"id":12378766,"uuid":"2d0ee5fd-75e0-4caa-9682-3de40ba48292","name":"0,5Л ВОДА СВЯТОЙ ИСТОЧНИК Б/Г","price":34.92,"discount":0.0,"discounted":false,"instamart_price":34.92,"items_per_pack":1,"product_id":66967,"retailer_id":1,"store_id":21,"retailer_sku":"473978","rsku":"1-60045","stock":3498,"stock_rate":0,"max_stock_rate":4,"discount_ends_at":null,"price_type":"per_item","unit_price":34.92,"original_unit_price":34.92,"grams_per_unit":500,"vat_info":null,"bmpl_info":null,"published":true,"product_name":"Вода питьевая Святой Источник негазированная 0,5 л","pickup_order":0,"product_sku":"60045","retailer_price":34.92,"cost_price":34.92,"offer_price":34.92,"shelf_life":null,"max_stock":0,"vat_rate":20,"updated_at":"2022-06-01T10:09:48.000+03:00","permalink":"voda-sviatoi-istochnik-nieghazirovannaia-5","store":{"id":21,"name":"METRO, Складочная","active":true,"retailer_slug":"metro","retailer_color":"#002d72","time_zone":"Europe/Moscow","uuid":"817e931f-f909-455c-8441-28f560cb446b","has_conveyor":false,"auto_routing":true,"express_delivery":false,"box_scanning":true,"training":false,"min_order_amount":1500.0,"min_first_order_amount":1000.0,"min_first_order_amount_pickup":500.0,"min_order_amount_pickup":500.0,"available_for_pickup":true,"external_assembly":false,"on_demand":false,"on_demand_raw":false,"parallel_assembly":false,"next_delivery":null,"location":{"id":20,"full_address":"Москва, Складочная, 1 стр 1","city":"Москва","street":"Складочная","building":"1 стр 1","block":null,"floor":null,"apartment":null,"entrance":null,"elevator":null,"region":null,"comments":null,"phone":null,"area":null,"settlement":null,"lat":55.800434,"lon":37.594311,"city_kladr_id":null,"street_kladr_id":null,"user_id":null,"door_phone":null,"kind":null,"delivery_to_door":false}},"variant":{"items_per_pack":1,"weight":500.0,"displayed_volume":"500 мл.","sku":"60045","images":[{"mini_url":"https://sbermarket.ru/spree/products/55923/mini/60045_1.jpg?1639928321","small_url":"https://sbermarket.ru/spree/products/55923/small/60045_1.jpg?1639928321","product_url":"https://sbermarket.ru/spree/products/55923/product/60045_1.jpg?1639928321","preview_url":"https://sbermarket.ru/spree/products/55923/preview/60045_1.jpg?1639928321","original_url":"https://sbermarket.ru/spree/products/55923/original/60045_1.jpg?1639928321","is_placeholder":false,"position":1}]}}}}

我已经完全复制了请求标头,但对我没有任何作用。如何获得正确的服务器响应?

PS:我注意到一个奇怪的特性:如果你在请求头中注释掉cookie,服务器响应将是403。

python api
  • 1 1 个回答
  • 75 Views

1 个回答

  • Voted
  1. Best Answer
    Сергей Ш
    2022-08-01T22:47:59Z2022-08-01T22:47:59Z

    需要转移JSON。
    例子:

    json_data = {
                'line_item': {
                    'offer_id': 11042190,
                },
    }
        
    response = requests.post('https://sbermarket.ru/api/line_items', json=json_data)
    
    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5