Нужна ПОМОЩЬ * захватывая токен CSRF и передавая его для создания учетной записи - PullRequest
0 голосов
/ 09 июня 2019

Я хотел бы получить токен CSRF для создания учетной записи с использованием запросов Python, но, похоже, не могу его получить. Я могу распечатать файлы cookie, но токен csrf не печатается.

Если бы кто-нибудь мог помочь, это было бы очень признательно. Я застрял в этом вопросе около 3 недель.

*** P.S Новый токен CSRF генерируется каждый сеанс *** Также включена капча

import requests

URL = 'https://www.nakedcph.com/'

LOGIN_URL = 'https://www.nakedcph.com/auth/view?op=register'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 
Safari/537.36', 'x-requested-with': 'XMLHttpRequest',
}

response = requests.get(LOGIN_URL, headers=headers, verify=False)

headers['cookie'] = '; '.join([x.name + '=' + x.value for x in 
response.cookies])
headers['anticsrftoken'] = '; '.join([x.name + '=' + x.value for x in 
response.cookies])

payload = {
    'firstName': 'Jena',
    'email': 'jena@fakeemail.com',
    'password': 'fakepassword'
}

response = requests.post(LOGIN_URL, data=payload, headers=headers, 
verify=False)
headers['cookie'] = '; '.join([x.name + '=' + x.value for x in 
response.cookies])
headers['anticsrftoken'] = '; '.join([x.name + '=' + x.value for x in response.cookies])

from twocaptcha import TwoCaptcha

API_KEY = '80811091f76e42b84123456789101112131415'
twoCaptcha = TwoCaptcha(API_KEY)

#twocaptcha Solving

page_url = 'https://www.nakedcph.com/auth/view?op=register'
site_key = '6LeNqBUUAAAAAFbhC-CS22rwzkZjr_g4vMmqD_qo'
captcha_token = twoCaptcha.solve_captcha(site_key=site_key, 
page_url=page_url)
print(captcha_token) # Ex. '03AE...'

#Two Captcha Print Balance

balance = twoCaptcha.get_balance()
[enter image description here][1]print(balance) # Ex. '6.11472'

1 Ответ

0 голосов
/ 09 июня 2019

Просто удар в темноте ... вы не хотите отправлять свои куки (CSRF и т. Д.) Как часть полезной нагрузки, а не заголовки? Кроме того, я бы создал requests.session() экземпляр и использовал бы его для выполнения GETing и POSTing.

РЕДАКТИРОВАТЬ * Вы можете извлечь токен CSRF из html ответа, используя BeautifulSoup. Взгляните:

<form action="/auth/submit" method="post" class="mb-3">
    <input type="hidden" name="_AntiCsrfToken" value="...">
...