[英]How to login to a website using requests.post python module
http://order.uniteduk.co.uk/index.php/login 。 這是我想發送登錄詳細信息並登錄以提取其他功能的網站。 有人可以使用 (Post) 請求方法幫助我做到這一點。 我不想使用硒這是我嘗試過的
LOGIN = 'http://order.uniteduk.co.uk/index.php/login'
PROTECTED_PAGE = 'http://order.uniteduk.co.uk/index.php/home'
payload = {
'username': 'username',
'password': 'pwd'
}
import requests
s = requests.session()
response = s.post(LOGIN, data=payload)
print(response.text)
stuff = s.get(PROTECTED_PAGE)
print(stuff.text)
這就是我得到的回報
不能接受的!
不能接受的!
在此服務器上找不到所請求資源的適當表示。 此錯誤是由 Mod_Security 生成的。
nonce
登錄請求中出於安全目的使用nonce
。 您可以在 loin 頁面上找到nonce
,並使用用戶名和密碼將nonce
發送到payload
。 在您的請求中添加headers
。
import requests
from bs4 import BeautifulSoup
login_url = 'http://order.uniteduk.co.uk/index.php/login'
protected_page_url = 'http://order.uniteduk.co.uk/index.php/home'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5', 'Accept-Encoding': 'gzip, deflate'
}
# Create Session.
s = requests.session()
# Get nonce from Login page.
response = s.get(login_url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
nonce = soup.find('input', {'id': 'woocommerce-login-nonce'}).get('value')
# Add Host, Origin and Referer into headers.
headers['Host'] = 'order.uniteduk.co.uk'
headers['Origin'] = 'http://order.uniteduk.co.uk'
headers['Referer'] = 'http://order.uniteduk.co.uk/index.php/login'
# Add nonce in payload.
payload = {
"username":"YourUsername",
"password":"YourPassword",
"woocommerce-login-nonce":nonce,
"_wp_http_referer":"/furniture/my-account/",
"login":"Login"}
# Login Request.
response = s.post(login_url, data=payload, headers=headers)
print(response.text)
# Login Protected Page Request.
stuff = s.get(protected_page_url, headers=headers)
print(stuff.text)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.