【发布时间】:2019-06-13 05:59:15
【问题描述】:
我正在尝试登录名为 grailed.com 的网站并关注某个产品。下面的代码是我试过的。
下面的代码使用我的凭据成功登录。但是,每当我尝试关注产品(有效负载中的 id 是产品的 id)时,代码运行时没有任何错误,但无法关注产品。我对这种行为感到困惑。是否与 Instagram 类似(Instagram 阻止任何以编程方式与他们的网站进行交互的尝试并强制您使用他们的 API(grailed.com 没有供公众使用 AFAIK 的 API)
我尝试了以下代码(看起来与您在网站上关注时发送的 POST 请求完全一样)。
headers/data defined here
r = requests.Session()
v = r.post("https://www.grailed.com/api/sign_in", json=data,headers = headers)
headers = {
'authority': 'www.grailed.com',
'method': 'POST',
"path": "/api/follows",
'scheme': 'https',
'accept': 'application/json',
'accept-encoding': 'gzip, deflate, br',
"content-type": "application/json",
"x-amplitude-id": "1547853919085",
"x-api-version": "application/grailed.api.v1",
"x-csrf-token": "9ph4VotTqyOBQzcUt8c3C5tJrFV7VlT9U5XrXdbt9/8G8I14mGllOMNGqGNYlkES/Z8OLfffIEJeRv9qydISIw==",
"origin": "https://www.grailed.com",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}
payload = {
"id": "7917017"
}
b = r.post("https://www.grailed.com/api/follows",json = payload,headers = headers)
【问题讨论】:
-
请提供登录和产品后续的请求详情。
-
事实上,CSRF 令牌是为防止此类使用而明确构建的。
标签: python python-3.x beautifulsoup python-requests