-1

我正在尝试登录我的 coingecko 帐户,但它说登录错误,即使我的帐户信息是正确的。
我尝试更新标题等,但它不起作用

这是我的代码:

import time
import requests
import json

s = requests.session()
r = s.get("https://www.coingecko.com/accounts/csrf_meta.json")
token = r.json()["token"]
cookie2 = s.cookies.get_dict()
cookie2 = json.dumps(cookie2)
cookie2 = json.loads(cookie2)
cookie3 = cookie2["_session_id"]

cookie = {
    "_session_id":f"{cookie3}"
}
data = {
    "utf8": "✓",
    "authenticity_token": token,
    "user[email]": "my mail",
    "user[password]": "my passw",
}

r2 = s.post("https://www.coingecko.com/account/sign_in?locale=tr",json=data,cookies=cookie)
print(r2.text)
print(s.cookies.get_dict())

它给了我5B%5B%22alert%22%2C%22Invalid+Email+or+password.%22%5D%5Dcookie 值,但我的密码和电子邮件是真实的

4

1 回答 1

0

您将其作为JSON( json=...) 发送,但必须以正常方式发送form( data=...)

s.post(url, data=data)

具有其他更改的最少工作代码。

我曾经locale=en收到过英文的闪信——它告诉我Signed in successfully.

因为您使用Session所以不需要添加cookies=...,因为Session应该自动添加。

import requests
import json
import urllib

s = requests.Session()
r = s.get("https://www.coingecko.com/accounts/csrf_meta.json")

token = r.json()["token"]

data = {
    "utf8": "✓",
    "authenticity_token": token,
    "user[email]": "my_email",
    "user[password]": "my_password",
    #"user[redirect_to]": "https://www.coingecko.com/en",
    #"user[remember_me]": ["0"]
}

r = s.post("https://www.coingecko.com/account/sign_in?locale=en", data=data)
#print(r.text)

cookies = s.cookies.get_dict() 
print('cookies:', cookies)

if 'flash' in cookies:
    flash = cookies['flash']
    flash = urllib.parse.unquote_plus(flash)
    flash = json.loads(flash)
    print('flash:', flash[0][1])

结果:

cookies: {'flash': '%5B%5B%22notice%22%2C%22Signed+in+successfully.%22%5D%5D', '_session_id': '0c457f737330527a1eae7f98b0e8df5e'}

flash: Signed in successfully.
于 2021-11-07T13:00:33.237 回答