javascript - 该站点如何形成 POST 请求的标头?
问题描述
我正在尝试了解当用户输入邮政编码并从以下网站发出“POST”命令(通过单击“立即购买”按钮)时如何构建标题:
我相信这个“POST”请求的有趣部分是该站点如何形成以下标头,但我无法弄清楚它是如何做到的(我怀疑有一些 JavaScript/Angular 代码负责):
x-ccwfdfx7-a
x-ccwfdfx7-b
x-ccwfdfx7-c
x-ccwfdfx7-d
x-ccwfdfx7-f
x-ccwfdfx7-z
因此,我尝试使用该requests
模块以访客身份登录,以了解有关此流程如何工作的更多信息:
- 与 requests.Session()
- 使用 cloudcraper.create_scraper()
到目前为止,我所有的尝试都失败了。这是我的代码:
import requests
from requests_toolbelt.utils import dump #pip install requests_toolbelt
import cloudscraper #pip install cloudscraper
#with requests.Session() as session:
with cloudscraper.create_scraper(
browser={
'custom': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
}
) as session:
CITY = XXXXX
ZIPCODE = XXXXX
#get cookies
url = 'http://www.peapod.com'
res1 = session.get(url)
session.headers['Referer'] = 'https://www.peapod.com/'
#get more cookies
url = 'http://www.peapod.com/login'
res2 = session.get(url)
#get more cookies
url = 'https://www.peapod.com/ppd/bundles/js/ppdBundle.js'
res3 = session.get(url)
#get all the service locations
response = session.get('https://www.peapod.com/api/v4.0/serviceLocations',
params={
'customerType': 'C',
'zip': ZIPCODE
}
)
try:
loc_id = list(
filter(
lambda x: x.get('location', {}).get('city') == CITY, response.json()['response']['locations']
)
)[0]['location']['id']
except IndexError:
raise ValueError("Can't find City '{}' -> Zip {}".format(CITY, ZIPCODE))
#login as guest
response = session.post('https://www.peapod.com/api/v4.0/user/guest',
json={
'customerType': 'C',
'cities': None,
'email': None,
'serviceLocationId': loc_id,
'zip': ZIPCODE
},
params={
'serviceLocationId': loc_id,
'zip': ZIPCODE
}
)
这似乎会产生某种错误消息,说“我被阻止了”,我认为这是因为我无法弄清楚浏览器如何构造ccwfdfx7
“POST”请求中的标头(我的怀疑是是一些负责构建这些标头的 JavaScript/Angular 代码,但我找不到它,希望有人能提供帮助......)
在同一台电脑上,Chrome浏览器可以正常登录
解决方案
推荐阅读
- node.js - cpanel node.js 无法获取应用程序的锁:应用程序
- angular - 如何动态访问 angular.html 中定义的模板引用变量(符号:#)
- r - 使用带状置信区间可视化两个分类预测变量和连续结果之间的交互
- c - 乘以 3x3 矩阵的函数仅对中间列给出错误答案
- python - 相同的 BSD 套接字 API 程序适用于 Python,但不适用于 C++ 或 Rust
- c - 警告:使用“int”类型的表达式初始化“int *”的不兼容整数到指针转换;用 & 取地址
- python - Discord 事件导致命令无法运行 - Discord.py
- angular - Angular 9+:嵌套的 ng-content 和 ContentChildren
- istio - 我有一个关于 istio 速率限制的问题
- c# - 如何在不使用 SQL 的情况下使用 Entity Framework 有效地删除表中的所有记录?