Jump to content
  • 0
Đăng nhập để theo dõi  
songhanpoo

Login Shopee Với Python ! Hỏi đáp

Câu hỏi

Hi mọi người !

Em đang tìm hiểu để code đoạn login python, em có xem code ở bài này : 

import requests
import random
import hashlib


def csrftoken(length=32):
    # put your letters in the following string
    character='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    return ''.join((random.choice(character) for i in range(length)))


def encrypt_SHA256(password):
  sha_signature = \
      hashlib.sha256(password.encode()).hexdigest()
  return sha_signature



def main():
      url = 'https://banhang.shopee.vn/api/v1/login/'
      r = requests.get(url)
      arr = ["SPC_EC","SPC_F","SPC_R_T_ID","SPC_R_T_IV","SPC_SI","SPC_U","REC_T_ID","SPC_IA","SPC_T_ID","SPC_T_IV"]
      cookie_string = ""
      for x in arr:
        cookie_string += x + r.cookies[x] + " "

      headers = {
            'x-csrftoken'     : csrftoken(),
            'x-requested-with': 'XMLHttpRequest',
            'referer'         : 'https://banhang.shopee.vn/api/v1/login/',
            'cookie'          : "csrftoken="+ csrftoken() + "; " + cookie_string,
      }      
      print(headers)
      data = {
            "login_key"    : "Shopee_username",
            "login_type"   : "username",
            "password_hash": encrypt_SHA256(password="Shopee_pwd"),
            "captcha"      : "",
            "remember_me"  : True
      }
      #print(data)
      url="https://banhang.shopee.vn/api/v1/login/"
      response = requests.post(url,headers =headers, data=data)

      url2="https://banhang.shopee.vn/api/v1/login/"
      res = requests.request("GET", url = url2)
      print(res)
if __name__ == '__main__':
    main()

Em có login thử trên shopee và check thì thấy nó request về api này https://shopee.vn/api/v2/authentication/login
Và password khi em encrypt và shopee encrypt củng hoàn toàn khác nhau.
số kí tự thì bằng nhau.

Không biết anh em đã từng làm chưa ạ !

Giúp em với ạ.

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites

Recommended Posts

  • 0
4 giờ trước, Thiên Chi Kiều Nữ said:

Bạn vẫn sai nhé.

Thứ 1 : csrftoken chỉ sinh ra 1 lần và sử dụng 1 giá trị thôi, như bạn là mỗi lần lại 1 csrftoken khác nhau.
Thứ 2 : lúc bạn sử dụng session, lúc ban sử dụng request... cái này sai lòe ra nhé =.='' bạn nên coi kỹ lại code bạn trước nha..
Thứ 3:  data=json.dumps(payload) ->> sai nhé bạn.  data=payload là đủ

:167788060085147:

Hi Mod !
Mình cám ơn sự giúp đỡ của bạn rất nhiều. mình đã làm được rồi ạ.
Mình xin chia sẻ lại code bên dưới ạ.

import requests
import random
import hashlib
import json


def csrftoken(length=32):
    # put your letters in the following string
    character='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    return ''.join((random.choice(character) for i in range(length)))


def encrypt_SHA256(password):
    sha_signature = \
        hashlib.sha256((hashlib.md5(password.encode()).hexdigest()).encode()).hexdigest()
    return sha_signature



def main():        
        session = requests.Session()
        response = session.get('https://shopee.vn/api/v0/buyer/login/')
        # cook = response.cookies.get_dict()
        # cook_addon = { 'csrftoken' : csrftoken() }
        # cook_addon.update(cook)
        csrftoken_gen = csrftoken()
        # print(cook_addon)
        cookie_string = "; ".join([str(x)+"="+str(y) for x,y in response.cookies.get_dict().items()])
        headers = {
            'x-csrftoken'     : csrftoken_gen,
            'x-requested-with': 'XMLHttpRequest',
            'referer'         : 'https://shopee.vn/api/v0/buyer/login/',
            'cookie'          : "csrftoken=" + csrftoken_gen + "; " + cookie_string,
        }
        #print(headers)  
        payload = {
            'login_key'    : 'SP_Username',
            'login_type'   : 'username',
            'password_hash': encrypt_SHA256('SP_Password'),
            'captcha'      : "",
            'remember_me'  : True,
        }
        print(payload)
        url="https://shopee.vn/api/v0/buyer/login/login_post/"
        response = session.request("POST",url,headers=headers, data = payload)
        print(response.content)

        res = session.request("GET","https://banhang.shopee.vn/api/v1/login/")
        print(res.content)

if __name__ == '__main__':
    main()

 

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
  • 0
2 giờ trước, songhanpoo said:

Hi mọi người !

Em đang tìm hiểu để code đoạn login python, em có xem code ở bài này : 


import requests
import random
import hashlib


def csrftoken(length=32):
    # put your letters in the following string
    character='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    return ''.join((random.choice(character) for i in range(length)))


def encrypt_SHA256(password):
  sha_signature = \
      hashlib.sha256(password.encode()).hexdigest()
  return sha_signature



def main():
      url = 'https://banhang.shopee.vn/api/v1/login/'
      r = requests.get(url)
      arr = ["SPC_EC","SPC_F","SPC_R_T_ID","SPC_R_T_IV","SPC_SI","SPC_U","REC_T_ID","SPC_IA","SPC_T_ID","SPC_T_IV"]
      cookie_string = ""
      for x in arr:
        cookie_string += x + r.cookies[x] + " "

      headers = {
            'x-csrftoken'     : csrftoken(),
            'x-requested-with': 'XMLHttpRequest',
            'referer'         : 'https://banhang.shopee.vn/api/v1/login/',
            'cookie'          : "csrftoken="+ csrftoken() + "; " + cookie_string,
      }      
      print(headers)
      data = {
            "login_key"    : "Shopee_username",
            "login_type"   : "username",
            "password_hash": encrypt_SHA256(password="Shopee_pwd"),
            "captcha"      : "",
            "remember_me"  : True
      }
      #print(data)
      url="https://banhang.shopee.vn/api/v1/login/"
      response = requests.post(url,headers =headers, data=data)

      url2="https://banhang.shopee.vn/api/v1/login/"
      res = requests.request("GET", url = url2)
      print(res)
if __name__ == '__main__':
    main()

Em có login thử trên shopee và check thì thấy nó request về api này https://shopee.vn/api/v2/authentication/login
Và password khi em encrypt và shopee encrypt củng hoàn toàn khác nhau.
số kí tự thì bằng nhau.

Không biết anh em đã từng làm chưa ạ !

Giúp em với ạ.

Mã hóa pass của bạn sai rồi , thế này mới đúng 
 

Trích dẫn

Pass_Hashmd5 = hashlib.md5(shopee_Pass.encode("utf-8"))
Pass_HashSHA256 = hashlib.sha256(Pass_Hashmd5.hexdigest().encode("utf-8")).hexdigest()

Ngoài ra lượt post cuối bạn cũng phải add csrf vào cookie nhé.

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
  • 0
1 giờ trước, Thiên Chi Kiều Nữ said:

Mã hóa pass của bạn sai rồi , thế này mới đúng 
 

Ngoài ra lượt post cuối bạn cũng phải add csrf vào cookie nhé.

Thanks ad ! mình đã sữa lại thế này. 
Nhưng vẫn response 403 ! 
 

import requests
import random
import hashlib
import json


def csrftoken(length=32):
    # put your letters in the following string
    character='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    return ''.join((random.choice(character) for i in range(length)))


def encrypt_SHA256(password):
    sha_signature = \
        hashlib.sha256((hashlib.md5(password.encode()).hexdigest()).encode()).hexdigest()
    return sha_signature



def main():        
        #Get cookie temp
        session = requests.Session()
        response = session.get('https://shopee.vn/api/v0/buyer/login/')

        cookie_string = "; ".join([str(x)+"="+str(y) for x,y in response.cookies.get_dict().items()])

        headers = {
            'x-csrftoken'     : csrftoken(),
            'referer'         : 'https://shopee.vn/api/v0/buyer/login/',
            'Cookies'          : "csrftoken=" + csrftoken() + "; " + cookie_string
        }      
        payload = {
            'login_key'    : 'SP_username',
            'login_type'   : 'username',
            'password_hash': encrypt_SHA256('SP_password'),
            'captcha'      : '',
            'remember_me'  : 'true',
        }
        # print('</br>')
        # print(json.loads(data))
        url="https://shopee.vn/api/v0/buyer/login/login_post/"
        response = requests.request("POST",url,headers=headers, data = json.dumps(payload))
        print(response)


        # url2="https://banhang.shopee.vn/api/v1/login/"
        # res = requests.request("GET", url = url2)
        # print(res)
if __name__ == '__main__':
    main()

 

Edited by songhanpoo

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
  • 0

Mình đã thử đổi lại combine obj của cookie để add thêm csrftoken vào cookie như sau 
 

import requests
import random
import hashlib
import json


def csrftoken(length=32):
    # put your letters in the following string
    character='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    return ''.join((random.choice(character) for i in range(length)))


def encrypt_SHA256(password):
    sha_signature = \
        hashlib.sha256((hashlib.md5(password.encode()).hexdigest()).encode()).hexdigest()
    return sha_signature



def main():        
        session = requests.Session()
        response = session.get('https://shopee.vn/api/v0/buyer/login/')
        cook = response.cookies.get_dict()
        cook_addon = { 'csrftoken' : csrftoken() }
        cook_addon.update(cook)
        # print(cook_addon)
        #cookie_string = "; ".join([str(x)+"="+str(y) for x,y in response.cookies.get_dict().items()])
        headers = {
            'x-csrftoken'     : csrftoken(),
            'x-requested-with': 'XMLHttpRequest',
            'referer'         : 'https://shopee.vn/api/v0/buyer/login/',
            # 'cookie'          : "csrftoken=" + csrftoken() + "; " + cookie_string,
        }
        #print(headers)     
        payload = {
            'login_key'    : 'SP_username',
            'login_type'   : 'username',
            'password_hash': encrypt_SHA256('SP_password'),
            'captcha'      : '',
            'remember_me'  : 'true',
        }
        url="https://shopee.vn/api/v0/buyer/login/login_post/"
        response = requests.request("POST",url,headers=headers, data = json.dumps(payload), cookies = cook_addon)
        print(response.status_code)


if __name__ == '__main__':
    main()

Nhưng vẫn không được. mong mọi người giúp đỡ ạ.

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
  • 0
1 giờ trước, songhanpoo said:

Mình đã thử đổi lại combine obj của cookie để add thêm csrftoken vào cookie như sau 
 


import requests
import random
import hashlib
import json


def csrftoken(length=32):
    # put your letters in the following string
    character='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    return ''.join((random.choice(character) for i in range(length)))


def encrypt_SHA256(password):
    sha_signature = \
        hashlib.sha256((hashlib.md5(password.encode()).hexdigest()).encode()).hexdigest()
    return sha_signature



def main():        
        session = requests.Session()
        response = session.get('https://shopee.vn/api/v0/buyer/login/')
        cook = response.cookies.get_dict()
        cook_addon = { 'csrftoken' : csrftoken() }
        cook_addon.update(cook)
        # print(cook_addon)
        #cookie_string = "; ".join([str(x)+"="+str(y) for x,y in response.cookies.get_dict().items()])
        headers = {
            'x-csrftoken'     : csrftoken(),
            'x-requested-with': 'XMLHttpRequest',
            'referer'         : 'https://shopee.vn/api/v0/buyer/login/',
            # 'cookie'          : "csrftoken=" + csrftoken() + "; " + cookie_string,
        }
        #print(headers)     
        payload = {
            'login_key'    : 'SP_username',
            'login_type'   : 'username',
            'password_hash': encrypt_SHA256('SP_password'),
            'captcha'      : '',
            'remember_me'  : 'true',
        }
        url="https://shopee.vn/api/v0/buyer/login/login_post/"
        response = requests.request("POST",url,headers=headers, data = json.dumps(payload), cookies = cook_addon)
        print(response.status_code)


if __name__ == '__main__':
    main()

Nhưng vẫn không được. mong mọi người giúp đỡ ạ.

Bạn vẫn sai nhé.

Thứ 1 : csrftoken chỉ sinh ra 1 lần và sử dụng 1 giá trị thôi, như bạn là mỗi lần lại 1 csrftoken khác nhau.
Thứ 2 : lúc bạn sử dụng session, lúc ban sử dụng request... cái này sai lòe ra nhé =.='' bạn nên coi kỹ lại code bạn trước nha..
Thứ 3:  data=json.dumps(payload) ->> sai nhé bạn.  data=payload là đủ

:167788060085147:

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
  • 0
4 giờ trước, songhanpoo said:

Hi Mod !
Mình cám ơn sự giúp đỡ của bạn rất nhiều. mình đã làm được rồi ạ.
Mình xin chia sẻ lại code bên dưới ạ.


import requests
import random
import hashlib
import json


def csrftoken(length=32):
    # put your letters in the following string
    character='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    return ''.join((random.choice(character) for i in range(length)))


def encrypt_SHA256(password):
    sha_signature = \
        hashlib.sha256((hashlib.md5(password.encode()).hexdigest()).encode()).hexdigest()
    return sha_signature



def main():        
        session = requests.Session()
        response = session.get('https://shopee.vn/api/v0/buyer/login/')
        # cook = response.cookies.get_dict()
        # cook_addon = { 'csrftoken' : csrftoken() }
        # cook_addon.update(cook)
        csrftoken_gen = csrftoken()
        # print(cook_addon)
        cookie_string = "; ".join([str(x)+"="+str(y) for x,y in response.cookies.get_dict().items()])
        headers = {
            'x-csrftoken'     : csrftoken_gen,
            'x-requested-with': 'XMLHttpRequest',
            'referer'         : 'https://shopee.vn/api/v0/buyer/login/',
            'cookie'          : "csrftoken=" + csrftoken_gen + "; " + cookie_string,
        }
        #print(headers)  
        payload = {
            'login_key'    : 'SP_Username',
            'login_type'   : 'username',
            'password_hash': encrypt_SHA256('SP_Password'),
            'captcha'      : "",
            'remember_me'  : True,
        }
        print(payload)
        url="https://shopee.vn/api/v0/buyer/login/login_post/"
        response = session.request("POST",url,headers=headers, data = payload)
        print(response.content)

        res = session.request("GET","https://banhang.shopee.vn/api/v1/login/")
        print(res.content)

if __name__ == '__main__':
    main()

 

Chúc mừng bạn :167788066751813:

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Trả lời câu hỏi này...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Đăng nhập để theo dõi  

×
×
  • Create New...