initial commit
This commit is contained in:
commit
02eff5188a
|
@ -0,0 +1,2 @@
|
|||
cache/*
|
||||
headers/*
|
|
@ -0,0 +1,3 @@
|
|||
X-IG-App-ID: 0000000000000000
|
||||
X-IG-WWW-Claim: hmac.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
Cookie: ig_cb=2; ig_did=0CCCC-CCCCCC-CCCCCCC; csrftoken=abc45644cc4cc4c4c4c4cc4; mid=YaaaaErt45xx454A_ee4aeExE4; rur=FRC; ds_user_id=4566544444; sessionid=4566544444%5555555555%5654
|
|
@ -0,0 +1,77 @@
|
|||
#!/usr/bin/python3
|
||||
import requests
|
||||
import hashlib
|
||||
import random
|
||||
import time
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
|
||||
def main():
|
||||
data = getig_user_data('shakira')
|
||||
print(json.dumps(data, indent=4))
|
||||
|
||||
# get all profile data from user:
|
||||
# - display name
|
||||
# - bio description
|
||||
# - shared posts (images/videos)
|
||||
# - much more info...
|
||||
def getig_user_data(user_id):
|
||||
return json.loads(
|
||||
instagram_get('/{}/?__a=1'.format(user_id), 120000)
|
||||
)
|
||||
|
||||
# runs a basic GET request emulating Tor Browser
|
||||
def instagram_get(url, CACHE_SECS=600):
|
||||
headers = get_random_headers()
|
||||
default_headers = {
|
||||
'Accept': '*/*',
|
||||
'Accept-Language': 'en-US,en;q=0.5',
|
||||
'Accept-Encoding': 'gzip, deflate, br',
|
||||
'Connection': 'keep-alive',
|
||||
'Cache-Control': 'no-cache',
|
||||
'Pragma': 'no-cache',
|
||||
'Host': 'www.instagram.com',
|
||||
'Referer': 'https://www.instagram.com/',
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0'
|
||||
}
|
||||
for key in default_headers.keys():
|
||||
if not key in headers:
|
||||
headers[key] = default_headers[key]
|
||||
url = 'https://www.instagram.com{}'.format(url)
|
||||
cachef = './cache/'+hashlib.md5(url.encode()).hexdigest()
|
||||
now = str(time.time())
|
||||
now = int(now[:now.index('.')])
|
||||
if os.path.exists(cachef):
|
||||
cache = readf(cachef).splitlines()
|
||||
ctime = int(cache[0])
|
||||
if now < ctime:
|
||||
return '\n'.join(cache[1:])
|
||||
|
||||
r = requests.get(url, headers=headers)
|
||||
resp = r.text
|
||||
w = open(cachef, 'w')
|
||||
w.write(str(now+CACHE_SECS) + '\n')
|
||||
w.write(resp)
|
||||
return resp
|
||||
|
||||
def get_random_headers():
|
||||
a = os.listdir('./headers')
|
||||
rin = 0
|
||||
if len(a)-1 > 0:
|
||||
rin = random.randint(0, len(a)-1)
|
||||
lines = readf('./headers/{}'.format(a[rin])).splitlines()
|
||||
headers = {}
|
||||
for line in lines:
|
||||
reg = re.search('(^[^:]+):(.*)', line)
|
||||
headers[reg.group(1).strip()] = reg.group(2).strip()
|
||||
return headers
|
||||
|
||||
def readf(f):
|
||||
r = open(f,'r')
|
||||
c = r.read().strip()
|
||||
r.close()
|
||||
return c
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue