web-dev-qa-db-fra.com

Instagram. Étant donné un User_id, comment puis-je trouver le nom d'utilisateur?

J'ai une liste de milliers d'identifiants d'instagram. Comment puis-je obtenir leurs noms d'utilisateur/poignées Instagram? 

Merci

Vous devez utiliser cette API Instagram:

https://api.instagram.com/v1/users/{user-id}/?access_token=ACCESS-TOKEN

La réponse aura le nom d'utilisateur, le nom complet, la bio, le nombre de suiveurs et d'autres informations.

Mais vous devez obtenir votre application approuvée par Instagram avant de pouvoir accéder à l'API. 

Vous pouvez essayer https://www.picodash.com , cela vous permet de rechercher un identifiant et d'obtenir les résultats de l'utilisateur, mais ce sera un processus manuel de rechercher un à un et d'obtenir les informations.

6
krisrak

Si vous n'avez pas approuvé l'application Instagram, je vous suggère d'utiliser cette bibliothèque php: https://github.com/postaddictme/instagram-php-scraper

$instagram = Instagram::withCredentials('username', 'password', 'path/to/cache/');
$account = $instagram->getAccountById('193886659');
echo $account->getUsername();

Ou accès direct:

https://www.instagram.com/query/?q=ig_user(3){id,username,external_url,full_name,profile_pic_url,biography,followed_by{count},follows{count},media{count},is_private,is_verified}

Mise à jour: Cette URL ne fonctionne plus. Vous devez utiliser POST. Voir repo pour savoir comment

10
raiym

Saisissez le nom d'écran d'une publication de l'utilisateur (par exemple https://www.instagram.com/p/Bqfhjk_AMTq/ ) en python:

import requests, re, json
from bs4 import BeautifulSoup
r = requests.get('https://www.instagram.com/p/Bqfhjk_AMTq/')
soup = BeautifulSoup(r.content, "lxml")
scripts = soup.find_all('script', type="text/javascript", text=re.compile('window._sharedData'))
stringified_json = scripts[0].get_text().replace('window._sharedData = ', '')[:-1]
print json.loads(stringified_json)['entry_data']['PostPage'][0]['graphql']['shortcode_media']['owner']['username']
2
lashgar

En raison de la limitation d'Instagram sur son API (je veux dire SandBox), il n'est pas facile d'utiliser l'API officielle d'Instagram pour de tels cas. J'ai donc codé un extrait de code en Python qui convertit l'ID utilisateur Instagram en nom d'utilisateur et vice-versa.

Il utilise l'API GraphQL pour obtenir des informations sans aucune limite d'Instagram.

import json
import requests
import re
import hashlib


def usernameToUserId(user):
    r1 = requests.get('https://www.instagram.com/web/search/topsearch/?query=' + user, headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0'}).text

    if json.loads(r1)['users'][0]['user']['username'] == user:
        return json.loads(r1)['users'][0]['user']['pk']


def useridToUsername(id):
    if str(id).isnumeric():
        r1 = requests.get('https://instagram.com/instagram/', headers={
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0', }).text
        rhx_gis = json.loads(re.compile('window._sharedData = ({.*?});', re.DOTALL).search(r1).group(1))['rhx_gis']

        ppc = re.search(r'ProfilePageContainer.js/(.*?).js', r1).group(1)
        r2 = requests.get('https://www.instagram.com/static/bundles/metro/ProfilePageContainer.js/' + ppc + '.js').text
        query_hash = re.findall(r'{value:!0}\);var u=\"(.*?)\"', r2)[0]

        query_variable = '{"user_id":"' + str(id) + '","include_reel":true}'
        t = rhx_gis + ':' + query_variable
        x_instagram_gis = hashlib.md5(t.encode("utf-8")).hexdigest()

        header = {'X-Instagram-GIS': x_instagram_gis,
                  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0',
                  'X-Requested-With': 'XMLHttpRequest'}
        r3 = requests.get(
            'https://www.instagram.com/graphql/query/?query_hash=' + query_hash + '&variables=' + query_variable,
            headers=header).text

        username = json.loads(r3)['data']['user']['reel']['user']['username']
        return username

Lien Github: https://github.com/Snbig/InstaTrack

0
Snbig

Maintenant que l'API Instagram référencée dans la réponse approuvée est n'est plus disponible , vous devrez recourir au grattage décrit dans l'autre réponse. Cela dit, je me suis retrouvé à ce SO parce que j’essayais de comprendre en quoi un utilisateur avait changé son nom d’utilisateur. 

Voici ce que j'ai compris: si vous avez un ID utilisateur, vous avez probablement déjà utilisé ou utilisé quelque chose comme 4K Stogram . Si c'est le cas, vous pouvez très bien avoir l'URL directe d'une page média qui ressemble à ceci: https://www.instagram.com/p/Bjh4rbdHcCU/ Le moyen le plus simple d'obtenir le nouveau nom d'utilisateur est simplement d'aller directement à cette URL qui aura été mise à jour avec le nouveau nom d'utilisateur. Si vous l'automatisez, il est assez facile d'extraire le nouveau nom d'utilisateur à partir de l'élément <title> de la page.

Je sais que la question de l'affiche originale était un peu différente de celle-ci, mais j'espère que c'est une solution pour certaines personnes qui se retrouvent sur cette page.

0
Matt K