[英]How to obtain CSRF token from Laravel and pass it in a python script
我正在使用oauth2-server-laravel來驗證將數據導出到 csv 文件的 api。 文檔有這個要求。
為了使某些授權和資源服務器與 Laravel5 正常工作,從
$middleware
數組中刪除App\\Http\\Middleware\\VerifyCsrfToken
行並將其放置在$routeMiddleware
數組中,如下所示:'csrf' => App\\Http\\Middleware\\VerifyCsrfToken::class,
注意:記得在任何合適的路由上手動添加 csrf 中間件。
問題是我的應用程序很大,我寧願不手動更改所有其他路由。 所以我在文檔中遇到了X-CSRF-TOKEN 。
我的問題是:如何獲取 csrf 令牌以便將其附加到 Python 中的標頭參數? 文檔說我可以使用 HTML 標記meta
但我沒有為此任務使用任何 HTML 文件。
我也不能使用會話,因為我不需要登錄來訪問 API。
一個更好的解決辦法:你可以得到網站刮板令牌容易像BeautifulSoup
import requests
from bs4 import BeautifulSoup
r = requests.get(url) #url is create form
soup = BeautifulSoup(r.text, 'html.parser')
for link in soup.find_all('input'):
token = link['value']
當然,請注意 Laravel 也會為每個表單生成一個 cookie。 因此,您需要將 cookie 與您的發布請求一起發送。
jar = requests.cookies.RequestsCookieJar()
jar.set('XSRF-TOKEN', r.cookies['XSRF-TOKEN'])
現在您可以輕松發送您的發布請求。 例如,我正在發送登錄請求
url_post = "http://localhost/login"
data = {
"_token": token,
"email": "example@email.com",
"password": "password"
}
login_request = requests.post(url_post, data=data, cookies=jar)
print(r.text)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.