获取FB令牌Python
我正在尝试将FB token发送到Tinder,但在提交确认表单后,我遇到了一些错误。我试图通过这个异常,但还是失败了获取FB令牌Python,python,python-3.x,robobrowser,Python,Python 3.x,Robobrowser,我正在尝试将FB token发送到Tinder,但在提交确认表单后,我遇到了一些错误。我试图通过这个异常,但还是失败了 重新导入 导入机器人浏览器 导入系统 随机输入 导入时间 MOBILE_USER_AGENT='Mozilla/5.0(iPhone;CPU iPhone OS 11_2_5,如Mac OS X)AppleWebKit/604.5.6(KHTML,如Gecko)MOBILE/15D60 AKiOSSDK/4.29.0' FB_AUTH='https://www.facebook
重新导入
导入机器人浏览器
导入系统
随机输入
导入时间
MOBILE_USER_AGENT='Mozilla/5.0(iPhone;CPU iPhone OS 11_2_5,如Mac OS X)AppleWebKit/604.5.6(KHTML,如Gecko)MOBILE/15D60 AKiOSSDK/4.29.0'
FB_AUTH='https://www.facebook.com/v2.6/dialog/oauth?redirect_uri=fb464891386855067%3A%2F%2Fauthorize%2F&scope=user_birthday%2Cuser_photos%2Cuser_education_history%2Cemail%2Cuser_relationship_details%2Cuser_friends%2Cuser_work_history%2Cuser_likes&response_type=token%2Csigned_request&client_id=464891386855067&ret=login&fallback_redirect_uri=221e1158-f2e9-1452-1a05-8983f99f7d6e&ext=1556057433&hash=Aea6jWwMP_tDMQ9y'
def获取访问令牌(电子邮件、密码):
s=robobrowser.robobrowser(user\u agent=MOBILE\u user\u agent,parser=“lxml”)
s、 打开(FB_认证)
##提交登录表单
f=s.获取表格()
f[“通过”]=密码
f[“电子邮件”]=电子邮件
s、 提交表格(f)
##单击对话框上的“确定”按钮,通知您已通过Tinder应用程序的身份验证
f=s.获取表格()
time.sleep(random.random()*1.5)
s、 提交表单(f,提交=f.提交字段[''确认])
##从http响应获取访问令牌
access\u token=re.search(r“access\u token=([\w\d]+)”,s.response.content.decode()).groups()[0]
返回访问令牌
email=sys.argv[1]
密码=sys.argv[2]
访问令牌=获取访问令牌(电子邮件、密码)
打印(访问令牌)
----------------------------------------------------------------------------
输出:
Traceback (most recent call last):
File "TokenRefresh.py", line 33, in <module>
access_token = get_access_token(email, password)
File "TokenRefresh.py", line 23, in get_access_token
s.submit_form(f, submit=f.submit_fields['__CONFIRM__'])
File "C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site-packages\robobrowser\browser.py", line 343, in submit_form
response = self.session.request(method, url, **send_args)
File "C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 668, in send
history = [resp for resp in gen] if allow_redirects else []
File "C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 668, in <listcomp>
history = [resp for resp in gen] if allow_redirects else []
File "C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 247, in resolve_redirects
**adapter_kwargs
File "C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 640, in send
adapter = self.get_adapter(url=request.url)
File "C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 731, in get_adapter
raise InvalidSchema("No connection adapters were found for '%s'" % url)
requests.exceptions.InvalidSchema: No connection adapters were found for... '
回溯(最近一次呼叫最后一次):
文件“TokenRefresh.py”,第33行,在
访问令牌=获取访问令牌(电子邮件、密码)
文件“TokenRefresh.py”,第23行,在get\u access\u token中
s、 提交表单(f,提交=f.提交字段[''确认])
文件“C:\Users\silva\AppData\Local\Programs\Python\36\lib\site packages\robobrowser\browser.py”,第343行,提交形式
response=self.session.request(方法、url、**发送参数)
文件“C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site packages\requests\sessions.py”,请求中第533行
resp=自我发送(准备,**发送)
文件“C:\Users\silva\AppData\Local\Programs\Python\36\lib\site packages\requests\sessions.py”,第668行,在send中
历史记录=[resp for resp in gen]如果允许,则重定向else[]
文件“C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site packages\requests\sessions.py”,第668行,在
历史记录=[resp for resp in gen]如果允许,则重定向else[]
文件“C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site packages\requests\sessions.py”,第247行,在resolve\u重定向中
**转接器
文件“C:\Users\silva\AppData\Local\Programs\Python\36\lib\site packages\requests\sessions.py”,第640行,在send中
adapter=self.get\u适配器(url=request.url)
文件“C:\Users\silva\AppData\Local\Programs\Python\Python36\lib\site packages\requests\sessions.py”,第731行,在get\U适配器中
raise InvalidSchema(“未找到“%s”的连接适配器%url)
requests.exceptions.InvalidSchema:找不到…的连接适配器
我可以得到响应,但代码仍然无法返回访问令牌。这个
res=browser如何。提交表单(表单,提交=“\uu确认””
这个res=browser怎么样。提交表单(表单,提交=”\uu确认)
经过进一步研究,我找到了解决方案
import re
import robobrowser
import sys
import random
import time
MOBILE_USER_AGENT = "Tinder/7.5.3 (iPhone; iOS 10.3.2; Scale/2.00)"
FB_AUTH = 'https://www.facebook.com/v2.6/dialog/oauth?redirect_uri=fb464891386855067%3A%2F%2Fauthorize%2F&scope=user_birthday%2Cuser_photos%2Cuser_education_history%2Cemail%2Cuser_relationship_details%2Cuser_friends%2Cuser_work_history%2Cuser_likes&response_type=token%2Csigned_request&client_id=464891386855067&ret=login&fallback_redirect_uri=221e1158-f2e9-1452-1a05-8983f99f7d6e&ext=1556057433&hash=Aea6jWwMP_tDMQ9y'
def get_access_token(email, password):
s = robobrowser.RoboBrowser(user_agent=MOBILE_USER_AGENT, parser="lxml")
s.open(FB_AUTH)
## submit login form
f = s.get_form()
f["pass"] = password
f["email"] = email
s.submit_form(f)
## click the 'ok' button on the dialog informing you that you have already authenticated with the Tinder app
f = s.get_form()
try:
s.submit_form(f, submit=f.submit_fields['__CONFIRM__'])
#print(s.response.content.decode())
access_token = re.search(
r"access_token=([\w\d]+)", s.response.content.decode()).groups()[0]
except requests.exceptions.InvalidSchema as browserAddress:
#print(type(browserAddress))
#print(str(browserAddress))
access_token = re.search(
r"access_token=([\w\d]+)", str(browserAddress)).groups()[0]
return(access_token)
email = sys.argv[1]
password = sys.argv[2]
access_token = get_access_token(email, password)
经过进一步研究,我找到了解决办法
import re
import robobrowser
import sys
import random
import time
MOBILE_USER_AGENT = "Tinder/7.5.3 (iPhone; iOS 10.3.2; Scale/2.00)"
FB_AUTH = 'https://www.facebook.com/v2.6/dialog/oauth?redirect_uri=fb464891386855067%3A%2F%2Fauthorize%2F&scope=user_birthday%2Cuser_photos%2Cuser_education_history%2Cemail%2Cuser_relationship_details%2Cuser_friends%2Cuser_work_history%2Cuser_likes&response_type=token%2Csigned_request&client_id=464891386855067&ret=login&fallback_redirect_uri=221e1158-f2e9-1452-1a05-8983f99f7d6e&ext=1556057433&hash=Aea6jWwMP_tDMQ9y'
def get_access_token(email, password):
s = robobrowser.RoboBrowser(user_agent=MOBILE_USER_AGENT, parser="lxml")
s.open(FB_AUTH)
## submit login form
f = s.get_form()
f["pass"] = password
f["email"] = email
s.submit_form(f)
## click the 'ok' button on the dialog informing you that you have already authenticated with the Tinder app
f = s.get_form()
try:
s.submit_form(f, submit=f.submit_fields['__CONFIRM__'])
#print(s.response.content.decode())
access_token = re.search(
r"access_token=([\w\d]+)", s.response.content.decode()).groups()[0]
except requests.exceptions.InvalidSchema as browserAddress:
#print(type(browserAddress))
#print(str(browserAddress))
access_token = re.search(
r"access_token=([\w\d]+)", str(browserAddress)).groups()[0]
return(access_token)
email = sys.argv[1]
password = sys.argv[2]
access_token = get_access_token(email, password)
我需要一个名字
如果提交不在submit\u fields.getlist(submit.name)中,则提交:AttributeError:'str'对象没有属性'name'
提交需要一个名称<代码>如果提交不在submit\u fields.getlist(submit.name)中,则提交:AttributeError:'str'对象没有属性'name'