我得到的状态代码为 200
。但是,当我使用 Chrome 登录并检查元素(网络)时,表单操作的状态代码
"/login/login/canva?redirect=%2F"
是 302
方法的 POST
。
Form
数据只有三个字段。我已经包含在脚本中了。
这是我在做什么
import urllib.request, urllib.parse, urllib.error
import lxml.html
from bs4 import BeautifulSoup
import requests
import ssl
from scrapy.http import FormRequest
from fake_useragent import UserAgent
import json
header = {
'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',
'referer' : 'http://www.canva.com/login/canva?redirect=%2F'
}
s = requests.Session()
get_some = s.get('http://www.canva.com/login')
soup = BeautifulSoup(get_some.text,'html.parser')
tags = soup('input')
for tag in tags:
if tag.get('type',None) == "hidden":
token = tag.get('value')
break
for form in soup.find_all('form'):
print(form.attrs.get('action'))
#print(soup.prettify())
print("===================================")
payload = {
'csrf_token' : token,
'email' : '**************',
'password' : '*********'
}
post_some = s.post('http://www.canva.com/login',data=payload , headers = header)
get_now = s.get('http://www.canva.com/login/canva?redirect=%2F')
print(post_some.status_code)
#print("xxxxxxxxxxxxxxxxxxxxxx")
if 'abcd' in get_now.text:
print("yes")
else:
print("no")
我只是从 GET
请求对象 get_now
返回登录页面。任何帮助将不胜感激。