Python 3.x Python授权
我需要写一个脚本,该脚本包含在我的互联网提供商的个人帐户中,并传输有关当前余额的信息 目前,我在授权时被卡住了。我为自己找到并编辑了这样一个脚本:Python 3.x Python授权,python-3.x,python-requests,Python 3.x,Python Requests,我需要写一个脚本,该脚本包含在我的互联网提供商的个人帐户中,并传输有关当前余额的信息 目前,我在授权时被卡住了。我为自己找到并编辑了这样一个脚本: import requests url = 'https://bill.tomtel.ru/login.html' USERNAME, PASSWORD, = 'mylogin', 'mypass' resp = requests.get(url, auth=(USERNAME, PASSWORD)) r = requests.post(ur
import requests
url = 'https://bill.tomtel.ru/login.html'
USERNAME, PASSWORD, = 'mylogin', 'mypass'
resp = requests.get(url, auth=(USERNAME, PASSWORD))
r = requests.post(url)
print(r.content)
但这无助于通过授权
我可以通过浏览器输入此链接并转到此类型的页面:
https://bill.tomtel.ru/fastcom/!w3_p_main.showform?FORMNAME=QFRAME&CONFIG=CONTRACT&SID=BLABLABLA&NLS=WR
我可以通过这两个链接进行浏览器授权,但为什么不能通过脚本进行呢
请提供帮助。您的浏览器可能存储了会话令牌/cookie,这就是您可以通过浏览器访问它的原因。这里有几个问题:
POST
方法,而不是GET
。GET
加载页面。但是一旦你提交了表单,它就会发出一个POST
请求请求
登录站点并不像看上去那么容易。通常,您必须找到它发布到的url(检查开发者工具栏以查看url),并且除了您的用户名/密码之外,您还必须传递信息,例如csrf令牌、cookie或其他信息李>
auth=(用户名,密码)
不是表单中的用户名/密码(它是其他的东西),但我认为理解它与您试图做的事情不太相关
以下是url和登录所需的表单数据:
我想你应该试试这个:
import requests
url = 'https://bill.tomtel.ru/signin.php'
USERNAME = input('Enter your username: ')
PASSWORD = input('Enter your password: ')
d = {
'USERNAME' : USERNAME,
'PASSWORD' : PASSWORD,
'FORMNAME' : 'QFRAME'}
session = requests.Session()
resp = session.post(url, data=d).text
if not '<TITLE>' in resp:
print('Incorrect username or password!')
quit()
print('Logging in ... ')
for line in resp.split('\n'):
if 'location' in line:
red = 'https://bill.tomtel.ru/fastcom/!w3_p_main.showform%s' % line.replace(' if (P>0) self.location.replace("', '').replace('");', '')
if not red:
print('An error has occured')
quit()
print('Redirecting to %s' % red)
page = session.get(red).text
print('')
print(' MAIN PAGE')
print(page)
导入请求
url='1〕https://bill.tomtel.ru/signin.php'
用户名=输入('输入用户名:')
PASSWORD=input('输入您的密码:')
d={
“用户名”:用户名,
“密码”:密码,
'FORMNAME':'QFRAME'}
会话=请求。会话()
resp=session.post(url,data=d).text
如果不是resp中的“”:
打印('不正确的用户名或密码!')
退出
打印('登录…')
对于分别拆分('\n')中的行:
如果行中有“位置”:
红色的https://bill.tomtel.ru/fastcom/!w3_p_main.showform%s'%line.replace('if(p>0)self.location.replace('','').replace('''),'').replace(''','')
如果不是红色:
打印('发生错误')
退出
打印('重定向到%s'%1!'红色)
页面=会话.get(红色).text
打印(“”)
打印('主页')
打印(第页)
改用post尝试此操作。payload={'USERNAME':USERNAME,'PASSWORD':PASSWORD}requests.post(url,data=payload)。我重复了使用Selenium Webdriver的建议。我会记住这一点,但我会把它作为最后的手段。它可以设法以通常的方式通过。评论不是为了进行长时间的讨论;这段对话已经结束。