如何将数据发送到表单并使用python请求发送表单?

2024-09-29 18:59:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想去链接,然后把数据发送到窗体,然后再发送到窗体本身,通过请求这只是通过需要在链接中指定的参数来处理的,但是我不能得到完全正确的链接来发送窗体,也就是说,我知道链接,并且它是如何在发送数据后形成的我不知道。你知道吗

如果打开“开发工具”并转到“网络”面板,参数中会显示以下行:

Query string
    action Login
    module Users

Form data
    __vtrftk sid: 34b6b3446d78b01ccb1e5678c89c86365a280a51,1521970011
    password you
    username hey

如果您转到标题并单击Edit And Resend按钮:将会有一个"Request Body"在那里和那里所有三个字段,csrf,user和pass。你知道吗

__vtrftk=sid%3A34b6b3446d78b01ccb1e5678c89c86365a280a51%2C1521970011&username=hey&password=you

如何使用请求通过python脚本登录?你知道吗

这是请求http://74.207.247.199:8181/index.php?module=Users&action=Login的链接

这是我糟糕的剧本

import sys
import requests
from requests import Session
from bs4 import BeautifulSoup


target = 'http://74.207.247.199:8181/'

sec_target = 'http://74.207.247.199:8181/index.php?module=Users&action=Login'
def main(target, sec_target):
    with requests.Session() as session:
        # start of auth
        s = Session()
        get_csrf_token = s.get(target).text
        soup = BeautifulSoup(get_csrf_token, 'lxml')
        find_scrf_token_body = soup.find('div', id='loginDiv')
        find_csrf_token_input = find_scrf_token_body.find('input', {"name":"__vtrftk"}).attrs['value']
        #payload ={'__vtrftk':find_csrf_token_input+'&username=someuser&password=somepass'}
        headers = {
        '__vtrftk': find_csrf_token_input,
        'username': 'someuser',
        'password': 'somepass',
        'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0",
        'Content-Type': 'application/x-www-form-urlencoded',
        'Connection': 'keep-alive',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Referer': 'http://74.207.247.199:8181/',
        }
        # Отправляем данные в POST, в session записываются наши куки
        f = s.post(sec_target, headers=headers)
        g = s.get('http://74.207.247.199:8181/index.php?module=Users&action=Login').text
        soup = BeautifulSoup(g, 'lxml')
        find_alert_body = soup.find('div', id='loginDiv')
        find_alert = find_alert_body.find('div', class_='alert alert-error')
        print(find_alert)
        print(f.url)




if __name__ == '__main__':
    main(target, sec_target)

Tags: importtokenhttptarget链接usernameloginaction

热门问题