为了账号安全,请及时绑定邮箱和手机立即绑定

尽管谷歌浏览器收到响应,但 403 禁止通过 Python 进行 requests.post

尽管谷歌浏览器收到响应,但 403 禁止通过 Python 进行 requests.post

慕尼黑的夜晚无繁华 2021-10-12 17:28:42
我对网络抓取很陌生。我正在尝试通过对请求进行逆向工程并抓取数据来获取产品的 Flipkart 卖家的数据。我正在尝试的 URL 是:https : //www.flipkart.com/sellers?pid=HSAFFJWT2WUYHHHX,其中包含特定产品的卖家列表。当我在 Google chrome 中打开网络选项卡时,我可以看到它向:https : //www.flipkart.com/api/3/page/dynamic/product-sellers发出 POST 请求,请求负载为: {"requestContext":{"productId":"HSAFFJWT2WUYHHHX"},"locationContext":{"pincode":"110092"}}我正在我的代码中复制浏览器已发送的请求标头和有效负载,但我收到的是 403 Forbidden 消息,而不是有效的 JSON 数据。或者,我已经成功地使用Selenium打开此页面(https://www.flipkart.com/sellers?pid=HSAFFJWT2WUYHHHX),然后使用Beautiful Soup解析卖家数据。但是,硒非常非常慢。这就是为什么我试图直接获取 json,它在此页面上动态填充卖家数据。我试过从我的代码和邮递员发出帖子请求,但没有运气。import requestsimport jsonheaders = {            'Accept': '*/*',            'Accept-Encoding': 'gzip, deflate, br',            'Accept-Language': 'en-US,en;q=0.9',            'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',            'Connection': 'keep-alive',            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',            'Referer' :   'https://www.flipkart.com/sellers?pid=HSAFFJWT2WUYHHHX',            'Content-Type': 'application/json',            'Origin': 'https://www.flipkart.com',            'Host': 'www.flipkart.com',            'Pragma': 'no-cache'            }url = "https://www.flipkart.com/api/3/page/dynamic/product-sellers"payLoad = {"requestContext":{"productId":"HSAFFJWT2WUYHHHX"},"locationContext":{"pincode":"001195"}}response = requests.post(url,headers = headers,data = json.dumps(payLoad))print(response.status_code,response.reason)print(response.text)print(response.request.headers)但是我收到了 403 Forbidden。即使该页面不需要用户登录。也许有一些 api 期望我没有提供的安全令牌,这就是它抛出 403 Forbidden 的原因。谁能帮我弄清楚我缺少什么才能获得 Json?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 352 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信