【发布时间】:2017-07-01 23:24:48
【问题描述】:
我希望使用 lovoo API,但不知道如何开始。运行Charles代理,查看流量后,得出以下结论:
首先,只要用户通过应用程序 (iPhone) 登录,就会发送 GET 到 https://api.lovoo.com/oauth/requestToken?:
GET /oauth/requestToken? HTTP/1.1
Host api.lovoo.com
User-Agent LOVOO/612 (iPhone; iOS 10.2; Scale/3.00)
kissapi-app-idfv 1EC7A8E5-DF16-4E14-8EC9-98DD4772F903
tz Europe/xxx
kissapi-device-model iPhone 6s Plus
kissapi-app-version 3.17.0
kissapi-new-oauth 1
kissapi-device iphone
kissapi-app lovoo
wifi true
kissapi-adv-id 00000000-0000-0000-0000-000000000000
Connection keep-alive
kissapi-app-id 7F947A460DAFCA88556B2F35A6D78A3E
Authorization OAuth oauth_callback="oob", oauth_consumer_key="an.email%40gmail.com", oauth_nonce="A32CCA91-FB7A-4AA3-8314-0A9A6E67045E", oauth_signature="Sq8KTg%2FhVIGBaWgWXprPluczOs4%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1487017515", oauth_version="1.0"
Accept-Language en-CH;q=1, de-CH;q=0.9
kissapi-adv-on false
kissapi-version 1.20.0
kissapi-update-user-hash 6ea2bd15ea41d0dc8c2615589e2d52ec
Accept */*
kissapi-device-os 10.2
Accept-Encoding gzip, deflate
kissapi-sync-enabled 1
这也给出了以下令牌:oauth_token=44d83e8ef50f&oauth_token_secret=37998f6c6ef2e618
这之后是另一个GET 到https://api.lovoo.com/oauth/accessToken?:
GET /oauth/accessToken? HTTP/1.1
Host api.lovoo.com
User-Agent LOVOO/612 (iPhone; iOS 10.2; Scale/3.00)
kissapi-app-idfv 1EC7A8E5-DF16-4E14-8EC9-98DD4772F903
tz Europe/xxx
kissapi-device-model iPhone 6s Plus
kissapi-app-version 3.17.0
kissapi-new-oauth 1
kissapi-device iphone
kissapi-app lovoo
wifi true
kissapi-adv-id 00000000-0000-0000-0000-000000000000
Connection keep-alive
kissapi-app-id 7F947A460DAFCA88556B2F35A6D78A3E
Authorization OAuth oauth_consumer_key="an.email%40gmail.com", oauth_nonce="080328C9-0A53-4971-85E7-65A43F12DC09", oauth_signature="Km0vd8xtHaQmRgkrGLsiljel13o%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1487017515", oauth_token="44d83e8ef50f", oauth_version="1.0"
Accept-Language en-CH;q=1, de-CH;q=0.9
kissapi-adv-on false
kissapi-version 1.20.0
kissapi-update-user-hash 6ea2bd15ea41d0dc8c2615589e2d52ec
Accept */*
kissapi-device-os 10.2
Accept-Encoding gzip, deflate
kissapi-sync-enabled 1
并提供以下令牌:oauth_token=60c8977c8fe9509f&oauth_token_secret=549619c0ef4c4be7d7cb898e
现在,可以向https://api.lovoo.com/init 发出请求:
GET /init HTTP/1.1
Host api.lovoo.com
User-Agent LOVOO/612 (iPhone; iOS 10.2; Scale/3.00)
kissapi-app-idfv 1EC7A8E5-DF16-4E14-8EC9-98DD4772F903
tz Europe/xxx
kissapi-device-model iPhone 6s Plus
kissapi-app-version 3.17.0
kissapi-new-oauth 1
kissapi-device iphone
kissapi-app lovoo
wifi true
kissapi-adv-id 00000000-0000-0000-0000-000000000000
Connection keep-alive
kissapi-app-id 7F947A460DAFCA88556B2F35A6D78A3E
Authorization OAuth oauth_consumer_key="an.email%40gmail.com", oauth_nonce="B622CE9C-DA3D-435C-939A-C58B83DBE85C", oauth_signature="0irvAsilrrdCCdLfu%2F0XSj7THlc%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1487017515", oauth_token="60c8977c8fe9509f", oauth_version="1.0"
Accept-Language en-CH;q=1, de-CH;q=0.9
kissapi-adv-on false
kissapi-version 1.20.0
kissapi-update-user-hash 6ea2bd15ea41d0dc8c2615589e2d52ec
Accept */*
kissapi-device-os 10.2
Accept-Encoding gzip, deflate
kissapi-sync-enabled 1
这些是我捕获的标头,但我不知道如何发送它们并让Oauth 身份验证正常工作,尤其是oauth_nonce。
requests-oauthlib好像支持,但是不知道哪个token对应哪个变量:
from requests_oauthlib import OAuth1Session
lovoo = OAuth1Session(
'client_key',
client_secret='client_secret',
resource_owner_key='resource_owner_key',
resource_owner_secret='resource_owner_secret'
)
url = 'https://api.lovoo.com/init'
r = lovoo.get(url)
【问题讨论】:
-
Nonce 由客户端生成,它是随机的,您可能必须匹配预期的格式。您可能需要在 2 次调用中提供相同的随机数。请参阅en.wikipedia.org/wiki/Cryptographic_nonce 似乎这里有 2 个 nonce 值——一个由客户端创建,另一个由服务器创建。
-
OAuth 密钥/秘密呢?
-
您现在知道如何访问 API 了吗?
-
@Kelvin 这篇文章专门关于访问移动 API 并使用它模拟 iPhone。我已经设法使用请求使用 WebAPI 登录到 Lovoo。提出一个新问题,标记我,我会帮助你。我不想发布整个脚本,因为他们可能会再次更改登录方法。
-
@rhillhouse,你能写出这个问题的答案吗?只是总结一下你的发现和你的解决方案
标签: python python-3.x oauth python-requests