Skip to content

Instantly share code, notes, and snippets.

@Ell
Created December 28, 2013 05:24
Show Gist options
  • Select an option

  • Save Ell/8156324 to your computer and use it in GitHub Desktop.

Select an option

Save Ell/8156324 to your computer and use it in GitHub Desktop.
import requests
#import grequests
import datetime
import time
import hashlib
import random
import string
import json
API_URL = 'https://feelinsonice.appspot.com/'
TOKENS = {
'static_token': 'm198sOkJEn37DjqZ32lpRu76xmw288xSQ9',
'ENCRYPT_KEY_2': 'M02cnQ51Ji97vwT4',
'req_token_pattern': '0001110111101110001111010101111011010001001110011000110001000110',
'req_token_secret': 'iEk21fuwZApXlz93750dmW22pw389dPwOk'
}
USER_AGENT = 'Snapchat/4.1.01 (Nexus 4; Android 18; gzip)'
def timestamp():
n = datetime.datetime.now()
unix_time = time.mktime(n.timetuple())
return unix_time
def random_string(l=20):
return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(l))
def random_email():
return "{0}@gmail.com".format(random_string())
def random_password():
return random_string(10)
def generate_us_phone_numbers():
area = 220
number = 0
while True:
yield "%s%s" % (area, str(number).zfill(7))
number += 1000
s = str(area)
if s[1] == s[2]:
area += 1
generate_us_phone_numbers()
if number > 9999999:
area += 1
number = 0
if number == 9999999 and area == 999:
return
def request_token(auth_token, timestamp):
secret = "iEk21fuwZApXlz93750dmW22pw389dPwOk"
pattern = "0001110111101110001111010101111011010001001110011000110001000110"
first = hashlib.sha256(secret + auth_token).hexdigest()
second = hashlib.sha256(str(timestamp) + secret).hexdigest()
bits = [first[i] if c == "0" else second[i] for i, c in enumerate(pattern)]
return "".join(bits)
def static_request_token(timestamp):
return request_token(TOKENS['static_token'], timestamp)
def login(req_token, username, password):
t = timestamp()
url = API_URL + '/bq/login'
data = {
"req_token": req_token,
"timestamp": t,
"username": username,
"password": password
}
r = requests.post(url, data=data).text
return r
def create_user():
url = API_URL + '/bq/register'
t = timestamp()
data = {
'timestamp': t,
'req_token': static_request_token(t),
'email': random_email(),
'password': random_string,
'age': 23,
'birthday': '1990-01-21'
}
r = requests.post(url, data=data).json()
if not r['logged']:
create_user()
url2 = API_URL + '/ph/registeru'
data2 = {
'timestamp': t,
'req_token': static_request_token(t),
'email': data['email'],
'username': random_string()
}
r2 = requests.post(url2, data2).json()
l = login(request_token(r['token'], t), data2['username'], data['password'])
#return {
# 'username': l['username'],
# 'token': l['auth_token'],
# 'email': data['email']
#}
return l
def find_phone_number(num, user):
n = json.dumps({str(num): random_string()})
url = API_URL + "/ph/find_friends"
t = timestamp()
data = {
'username': user['username'],
'timestamp': t,
'req_token': request_token(user['token'], t),
'countryCode': 'US',
'numbers': n
}
r = requests.post(url, data=data).text
return r
if __name__ == '__main__':
user = create_user()
print user
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment