首页 > 解决方案 > Python requests.post 不发布(使用 cloudfare 绕过)

问题描述

我创建了一个脚本,它将在以下位置创建和帐户: https ://stress95.com/en/auth/view?op=register

import requests
import cloudscraper
import time


url = ('https://stress95.com/en/auth/view?op=register')

headers = {

    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
}


payload = {'firstName': 'test', 'email': 'afaff@pytronik.club', 'password': '12341fbb14', 'action': 'register', '_AntiCsrfToken': '3dee97c161c84c13a4400d19a8c6565c'}

scraper = cloudscraper.create_scraper(interpreter='nodejs')  # returns a CloudScraper instance
# Or: scraper = cloudscraper.CloudScraper()  # CloudScraper inherits from requests.Session
#print(scraper.get(url).text)

r = scraper.post(url, data=payload, headers=headers)
print(r.text)

请帮帮我,我对此感到疯狂

标签: pythonpython-requests

解决方案


这是因为你发错地方了。您链接的 url 是具有注册表单的端点。该注册表在这里发布:

<form action="/en/auth/submit" method="post" class="login-form">
...
</form>

仅仅发布到他们的页面不太可能做很多事情也毫无价值,因为他们表单中的第一个元素作为反 csrf 令牌:

<input type="hidden" name="_AntiCsrfToken" value="149d3fbcfdf74aec9eed68a4b78d33bf">

除非您从页面加载,否则您的帖子不会具有该值,这意味着他们只会拒绝您的请求。


推荐阅读