【发布时间】:2020-07-21 05:16:00
【问题描述】:
所以有 this 开源应用程序,它将引用字符串解析为 BibTex 格式,我正在尝试使用 Python Requests 将其功能集成到我的项目中。
我知道表单具有 CSRF 保护,因此我确保将令牌包含在 POST 请求中,但这并不成功,返回 404 错误:
from requests import Session
from lxml import html
citations = ["107 F. Scarpa, S. Blain, T. Lew, D. Perrott, M. Ruzzene and J. Yates, Elastic buckling of hexagonal chiral cell honeycombs, Composites, Part A, 2007, 38(2), 280–289"]
s = Session()
url = 'https://anystyle.io/'
page = s.get(url)
tree = html.fromstring(page.content)
csrf_token = tree.xpath("/html/head/meta[4]/@content")[0]
response = s.post(
headers = {
'Origin': url,
'Referer': url,
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'en-US,en;q=0.5',
'Content-Type': 'application/json;charset=utf-8',
'Connection': 'keep-alive',
'X-CSRF-TOKEN': csrf_token
},
url = url,
params = (
('format', 'json'),
),
json = {
'input': citations
},
cookies = {
'_any_style_session': s.cookies.get('_any_style_session')
}
)
response.json()
我想知道的是上述代码是否正确解决了 CSRF 问题以返回成功的请求,或者 app 是否被设计为防止自动请求。
【问题讨论】:
标签: python python-requests csrf-token