簡體   English   中英

如何從 Laravel 獲取 CSRF 令牌並將其傳遞到 python 腳本中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM