通过python请求、cloudflare站点登录
我学习python是为了好玩,我的项目就是用flash解析热门网站并将其发布到网站上。我在chrome中浏览了一下网络,发现登录请求正文包含以下数据:通过python请求、cloudflare站点登录,python,post,python-requests,Python,Post,Python Requests,我学习python是为了好玩,我的项目就是用flash解析热门网站并将其发布到网站上。我在chrome中浏览了一下网络,发现登录请求正文包含以下数据: _token: gse5bAi58jnciXdynLu7D7ncXmTg1twChWMjsOFF source: generic_join_button_header identity: login password: password remember: on 因此,我使用postman将这些数据填充到请求中,内容类型为application
_token: gse5bAi58jnciXdynLu7D7ncXmTg1twChWMjsOFF
source: generic_join_button_header
identity: login
password: password
remember: on
因此,我使用postman将这些数据填充到请求中,内容类型为application/x-www-form-urlencoded。回答是正确的,我可以用邮递员登录。但当我尝试用python复制时,失败了,我收到了404
def get_pepper_token():
url = "https://www.pepper.pl/login/modal/login"
request = requests.get(url)
soup = BeautifulSoup(page, features="html.parser")
return soup.find('input', attrs={'name': '_token'})['value']
def get_login_headers():
url = "https://www.pepper.pl/login"
username = 'username'
password = 'password'
token = get_pepper_token()
payload = {
'_token': token,
'source': 'generic_join_button_header',
'identity': username,
'password': password,
'remember': 'on'
}
headers = {
'Content-Type': "application/x-www-form-urlencoded"
}
response = requests.post(url, payload, headers=headers)
所以我在postman控制台中监控了请求中的内容:
Request Headers:
content-type:"application/x-www-form-urlencoded"
cache-control:"no-cache"
postman-token:"de74adb5-5e9b-4c98-9a95-bb69bc739270"
user-agent:"PostmanRuntime/7.2.0"
accept:"*/*"
cookie:"__cfduid=d32b701203ce16ee47549cbe5388b3faa1534746292; first_visit=%22bf0e1200-a441-11e8-b92e-6805ca619fd2%22; pepper_session=%2255c4b461a56c37f5c2ce1a7323b44f8d12353e91%22; browser_push_permission_requested=1534748540; remember_afba1956ef54387311fa0b0cd07acd2b=%22100085%7ChX2GS7H3l8QY79HasDcB3scptVyKGDVMJHdz4Ux2ONIih6Rp2VKhU0BpxvzD%22; view_layout_horizontal=%220-1%22; show_my_tab=0; navi=%5B%5D"
accept-encoding:"gzip, deflate"
referer:"https://www.pepper.pl/login"
正如你们所看到的,在请求头中有一些字段我并没有在postman中输入。我从postman的请求头中手动添加了cookie值,并且成功了。这些字段的其余部分不是必需的
您知道如何生成此cookie吗?答案是simple library RoboBrowser,以下是我解决部分问题的方法: 与我以前的尝试相比,这个解决方案非常简短和方便。
url = "https://www.pepper.pl/login/modal/login"
browser = RoboBrowser()
browser.open(url)
signup_form = browser.get_form('login_form')
signup_form['identity'].value = self.username
signup_form['password'].value = self.password
browser.submit_form(signup_form)