Форма входа и отправки не работает с запросами - PullRequest
0 голосов
/ 04 сентября 2018

Я написал код для миссии по программированию 2 на hackthissite , просто немного повеселиться и попрактиковаться в кодировании и т. Д. Я выполнил миссию, но мне не удалось заставить Python войти в систему с помощью requests библиотека и загрузить мой код в форму автоматически.

Вот фрагмент из моего кода с кодом, который не работает и по-прежнему говорит «вам необходимо войти» в содержании страницы:

def upload_code(key):
    login_url = 'https://www.hackthissite.org/user/login'
    btn_submit = 'Login'
    username = 'example_username'
    password = 'example_password'
    login = {
        'btn_submit': btn_submit,
        'password': password,
        'username': username,
    }

    session = requests.session()
    header_auth = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko',
        'referer': 'www.hackthissite.org/user/login'
    }
    auth = session.post(login_url, headers=header_auth, data=login)

    challange_url = 'https://www.hackthissite.org/missions/prog/2/index.php'
    header = {'referer': 'www.hackthissite.org/missions/prog/2/index.php'}
    data = {'solution': key}

    r = session.post(challange_url, headers=header, data=data, verify=True)
    print(r.content)

Если кто-нибудь скажет мне, что я делаю неправильно, я буду очень признателен.

1 Ответ

0 голосов
/ 05 сентября 2018

Вы должны установить куки.

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

Однако вы можете открыть Сеть в своем браузере (если вы используете Chrome, нажмите Cntrl + E, если вы используете Firefox, нажмите Cntrl + Shift + E), а затем перейдите на страница входа , чтобы найти действительный файл cookie PHPSESSID для запроса на вход в Cookies .

Затем вы можете вставить значение cookie PHPSESSID в коде ниже:

from requests import Session

login_url = "https://www.hackthissite.org/user/login"
page_url = "https://www.hackthissite.org/missions/prog/2/index.php"

PHPSESSID = f"PHPSESSID=2r4t6qg89b8k89b871q4b6q5i3" # Cookie example. Enter yours.

login_headers = {
    "Host": "www.hackthissite.org",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Accept-Encoding": "gzip, deflate, br",
    "Referer": "https://www.hackthissite.org/missions/prog/2/index.php",
    "Content-Type": "application/x-www-form-urlencoded",
    "Cookie": PHPSESSID,
    "Content-Length": "62",
    "Connection": "keep-alive",
    "Upgrade-Insecure-Requests": "1",
    "DNT": "1",
}

login_data = {
    "username": "Your username",
    "password": "Your password",
    "btn_submit": "Login",
}



page_headers = {
    "Host": "www.hackthissite.org",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Accept-Encoding": "gzip, deflate, br",
    "Referer": "https://www.hackthissite.org/missions/prog/2/index.php",
    "Connection": "keep-alive",
    "Cookie": "PHPSESSID=2r4t6qg8eb8j89b871q4b6q0i3",
    "Upgrade-Insecure-Requests": "1",
    "DNT": "1",
}

page_data = {
    "solution": "Dontevenknow",
}

with Session() as session:
    session.post(login_url, headers=login_headers, data=login_data)
    response = session.post(page_url, headers=page_headers, data=page_data)

    print("Authenticated:", "Login Required" not in response.text)

У меня работает нормально, я тестировал Firefox и Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...