【发布时间】:2018-12-13 20:11:36
【问题描述】:
我正在开发一个应用程序,该应用程序通过将用户上传到 csv 文件中来授予用户访问权限,但遇到了一些问题。
该文件是通过我在网络记录器中看到的多个请求发送的,第一个请求的表单数据如下所示:
文件[]:(二进制) 密码:4 团队成员:6 行动:团队初始检查
发送的第二个请求如下所示:
文件[]:(二进制) 密码:4 团队成员:6 行动:团队初始检查 发送邮件:1 行动:团队创建用户 唯一标识:48vkcuurjowt
最终的请求如下所示:
动作:createusersstatus 密码:4 唯一标识:48vkcuurjowt 团队详情:{"cohort_6":1}
uniqueid 是随机生成的 - 我可以发送我想要的任何内容(我相信),passid 始终为 4,teamid 我可以从页面中抓取,所以这不是问题。
问题在于使用以下代码:
login_headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/70.0.3538.110 Safari/537.36 '
}
login_data = {
'username': 'xxxx@xxxx',
'password': 'xxxxxxxx',
'anchor': ''
}
with requests.Session() as s:
s.headers = login_headers
s.upload_headers = upload_headers
s.data = login_data
url = BaseTest.getSiteURL()
r = s.post(url + '/login/index.php', data=login_data)
print(r.status_code)
csv_file = CSV.get_csv()
file = {'file': open(csv_file, 'rb')}
step1_data = {
'action': 'teaminitialcheck',
'passid': '4', # Should always be 4 - seems to be the id of the button
'teamid': '6' # Has to be scraped from DOM
}
r1 = s.post(url + '/local/admin/pages/user/ajax/getcsv.php', params=step1_data, files=file)
print(r1.status_code)
step2_data = {
'passid': '4',
'teamid': '6',
'action': 'teaminitialcheck',
'sendemail': '1',
'action': 'teamcreateusers',
'uniqueid': '4cxfre2236u8'
}
r2 = s.post(url + '/local/admin/pages/user/ajax/getcsv.php', data=step2_data, files=file)
# time.sleep(15)
print(r2.status_code)
step3_data = {
'action': 'createusersstatus',
'passid': '4', # Should always be 4 - seems to be the id of the button
'uniqueid': '4cxfre2236u8',
'teamdetails': '{"cohort_6":1}'
}
r3 = s.post(url + '/local/admin/pages/user/ajax/getcsv.php', data=step3_data)
print(r3.status_code)
我收到 200 响应 - 但我没有看到用户上传,并且响应内容说明了很多:
b'{"meta":{"fields":false,"usercount":0,"errors":[""],"invalidemail":0,"needseats":false,"displaydownload":false,"general":{"users":[],"errors":[],"invalidemails":0}},"action":"teaminitialcheck"}'
所以就好像我的代码没问题 - 但文件的内容没有一起发送。文件本身只有 2 行,其中一行在第二行包含电子邮件、名字、姓氏和相应的值。
感谢您的帮助。
【问题讨论】: