ازگر کا استعمال کرتے ہوئے انسٹاگرام ڈیٹا کو کھرچنے کا طریقہ

تبصرے: 0

اینٹی بوٹ میکانزم ، لاگ ان کی ضروریات اور شرح کی حدود کی وجہ سے انسٹاگرام ڈیٹا تک رسائی حاصل کرنا مشکل ہوسکتا ہے۔ تاہم ، آپ صحیح ٹولز اور تکنیک کے ساتھ عوامی پروفائلز سے مفید معلومات نکال سکتے ہیں۔ یہ مضمون آپ کو انسٹاگرام کے صارف کے ڈیٹا کو انسٹاگرام کے پسدید پر API کی درخواستیں کرکے ، لوٹائے گئے JSON ڈیٹا سے معلومات نکال کر ، اور اسے JSON فائل میں محفوظ کرکے API کی درخواستیں کرکے انسٹاگرام صارف کے ڈیٹا کو کھرچنے کے طریقہ کار کی رہنمائی کرے گا۔

مطلوبہ لائبریریوں کا قیام

کوڈ میں جانے سے پہلے ، یقینی بنائیں کہ آپ نے مطلوبہ ازگر لائبریریوں کو انسٹال کیا ہے۔


pip install requests python-box

  • درخواستیں: HTTP درخواستیں کرنے کے لئے۔
  • ازگر باکس: لغتوں کو ایسی اشیاء میں تبدیل کرکے ڈیٹا تک رسائی کو آسان بناتا ہے جو ڈاٹ اشارے تک رسائی کی اجازت دیتے ہیں۔

ہم بہتر افہام و تفہیم کے ل code کوڈ کو مختلف حصوں میں توڑ دیں گے ، بشمول درخواست بھیجنا ، ڈیٹا حاصل کرنا اور ان کی تجزیہ کرنا ، کھوج سے بچنے کے لئے پراکسیوں کا استعمال کرنا ، اور باکس لائبریری کے ساتھ JSON پارسنگ کو آسان بنانا۔

مرحلہ 1. API کی درخواست کرنا

انسٹاگرام کا فرنٹ اینڈ بہت زیادہ محفوظ ہے ، لیکن پسدید API کے اختتامی نکات کی پیش کش کرتا ہے جو بغیر کسی توثیق کے استعمال کیا جاسکتا ہے۔ ہم ان میں سے ایک پوائنٹ کو آگے بڑھنے کا استعمال کریں گے۔

یہ API صارف کے پروفائل کے بارے میں تفصیلی معلومات فراہم کرتا ہے ، جس میں ان کی تفصیل ، پیروکار کی گنتی ، اور پوسٹس شامل ہیں۔ آئیے یہ دریافت کرتے ہیں کہ ازگر میں درخواستوں کی لائبریری کا استعمال کرتے ہوئے ڈیٹا کی درخواست کیسے کریں۔

وضاحت:

  1. ہیڈر: انسٹاگرام نے درخواست کے ہیڈروں کا تجزیہ کرکے بیشتر بوٹ درخواستوں کو روکا ہے۔ X-IG-APP-ID ضروری ہے کیونکہ یہ انسٹاگرام ایپ سے ہی آنے والی درخواست کی نقالی کرتا ہے۔
  2. صارف ایجنٹ اسٹرنگ براؤزر کی نمائندگی کرتا ہے جس میں درخواست کی گئی ہے ، اور انسٹاگرام کو یہ یقین کرنے کے لئے کہ یہ ایک حقیقی صارف ہے۔
  3. بیکینڈ API کی درخواست: URL https://i.instagram.com/api/v1/users/web_profile_info/?username={username} انسٹاگرام کے پسدید API کا حصہ ہے۔ یہ عوامی پروفائل کے بارے میں تفصیلی معلومات فراہم کرتا ہے۔
  4. JSON جواب کو سنبھالنا: ہم استعمال کرتے ہیں response.json() API کے ردعمل کو JSON آبجیکٹ میں تبدیل کرنے کے لئے جس سے ہم آسانی سے تجزیہ کرسکتے ہیں اور معلومات نکال سکتے ہیں۔

import requests

# Define headers to mimic a real browser request
headers = {
    "x-ig-app-id": "936619743392459",  # Instagram app ID to authenticate the request
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9,ru;q=0.8",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept": "*/*",
}

# Replace this with the username you want to scrape
username = 'testtest'

# Send an API request to get profile data
response = requests.get(f'https://i.instagram.com/api/v1/users/web_profile_info/?username={username}', headers=headers)
response_json = response.json()  # Parse the response into a JSON object

مرحلہ 2۔ شرح کو محدود کرنے کے لئے پراکسیوں کو سنبھالنا

چونکہ انسٹاگرام ایک ہی IP پتے سے بار بار درخواستوں پر پابندی عائد کرتا ہے ، لہذا بڑے پیمانے پر سکریپنگ کے لئے پراکسیوں کا استعمال ضروری ہے۔ ایک پراکسی آپ کی درخواستوں کو مختلف IP پتے کے ذریعے راستہ بناتا ہے ، جس سے آپ کو پتہ لگانے سے بچنے میں مدد ملتی ہے۔

ایک پراکسی سرور قائم کرنے کے ل ، آپ کو IP ایڈریس ، پورٹ نمبر ، اور ، اگر ضرورت ہو تو ، صارف کا نام اور توثیق کے لئے پاس ورڈ کی ضرورت ہوگی۔


proxies = {
    'http': 'http://<proxy_username>:<proxy_password>@<proxy_ip>:<proxy_port>',
    'https': 'https://<proxy_username>:<proxy_password>@<proxy_ip>:<proxy_port>',
}

response = requests.get(f'https://i.instagram.com/api/v1/users/web_profile_info/?username={username}', headers=headers, proxies=proxies)

مرحلہ 3. باکس کے ساتھ JSON پارسنگ کو آسان بنانا

انسٹاگرام کا API ایک پیچیدہ نیسٹڈ JSON ڈھانچہ لوٹاتا ہے ، جس کو روایتی لغت پر مبنی رسائی کا استعمال کرتے ہوئے تشریف لانا مشکل ہوسکتا ہے۔ پارسنگ کو آسان بنانے کے ل we ، ہم باکس لائبریری کا استعمال کرسکتے ہیں ، جو لغت کی چابیاں کے بجائے ڈاٹ نوٹیشن کا استعمال کرتے ہوئے JSON ڈیٹا تک رسائی کی اجازت دیتا ہے۔

وضاحت:

  1. باکس: یہ لائبریری JSON لغت کو کسی شے میں تبدیل کرتی ہے ، جس سے ہمیں ڈاٹ اشارے کا استعمال کرتے ہوئے گہری گھونسلے والے فیلڈز تک رسائی حاصل ہوتی ہے۔ مثال کے طور پر ، لکھنے کے بجائے response_json['data']['user']['full_name']، ہم آسانی سے لکھ سکتے ہیں response_json.data.user.full_name.
  2. ڈیٹا نکالنا: ہم صارف کے مکمل نام ، ID ، سوانح حیات کی طرح مفید پروفائل کی معلومات نکالتے ہیں ، چاہے وہ کاروبار ہو یا پیشہ ور اکاؤنٹ ، تصدیق کی حیثیت ، اور پیروکار کی گنتی۔

from box import Box

response_json = Box(response.json())

# Extract user profile data
user_data = {
    'full name': response_json.data.user.full_name,
    'id': response_json.data.user.id,
    'biography': response_json.data.user.biography,
    'business account': response_json.data.user.is_business_account,
    'professional account': response_json.data.user.is_professional_account,
    'category name': response_json.data.user.category_name,
    'is verified': response_json.data.user.is_verified,
    'profile pic url': response_json.data.user.profile_pic_url_hd,
    'followers': response_json.data.user.edge_followed_by.count,
    'following': response_json.data.user.edge_follow.count,
}

مرحلہ 4. ویڈیو اور ٹائم لائن ڈیٹا نکالنا

ایک بار پروفائل ڈیٹا نکالنے کے بعد ، ہم صارف کی ویڈیو ٹائم لائن اور باقاعدہ پوسٹس سے ڈیٹا کو کھرچ سکتے ہیں۔

وضاحت:

  1. ویڈیو ڈیٹا: یہ سیکشن صارف کے انسٹاگرام ویڈیوز کے بارے میں ڈیٹا نکالتا ہے ، بشمول ویڈیو یو آر ایل ، دیکھیں گنتی ، تبصرہ کی گنتی ، اور ویڈیو کی مدت۔
  2. ٹائم لائن میڈیا: اسی طرح ، یہ سیکشن صارف کی ٹائم لائن سے ڈیٹا نکالتا ہے ، جس میں پوسٹ کے میڈیا یو آر ایل ، پسند اور تبصرے پر قبضہ کیا جاتا ہے۔

# Extract video data
profile_video_data = []
for element in response_json.data.user.edge_felix_video_timeline.edges:
    video_data = {
        'id': element.node.id,
        'short code': element.node.shortcode,
        'video url': element.node.video_url,
        'view count': element.node.video_view_count,
        'comment count': element.node.edge_media_to_comment.count,
        'like count': element.node.edge_liked_by.count,
        'duration': element.node.video_duration,
    }
    profile_video_data.append(video_data)

# Extract timeline media data (photos and videos)
profile_timeline_media_data = []
for element in response_json.data.user.edge_owner_to_timeline_media.edges:
    media_data = {
        'id': element.node.id,
        'short code': element.node.shortcode,
        'media url': element.node.display_url,
        'comment count': element.node.edge_media_to_comment.count,
        'like count': element.node.edge_liked_by.count,
    }
    profile_timeline_media_data.append(media_data)

مرحلہ 5. ڈیٹا کو JSON فائلوں میں محفوظ کرنا

ایک بار جب آپ نے تمام ڈیٹا نکال لیا تو ، اگلا قدم مزید تجزیہ یا اسٹوریج کے لئے اسے JSON فائل میں محفوظ کرنا ہے۔ ہم JSON فائلوں کو نکالا ہوا ڈیٹا لکھنے کے لئے ازگر کے JSON ماڈیول کا استعمال کرتے ہیں۔ ہر فائل کو صاف ستھرا فارمیٹ کیا جائے گا indent=4 پیرامیٹر ، جو ڈیٹا کو پڑھنا اور اس پر کارروائی کرنا آسان بناتا ہے۔


import json

# Save user data to a JSON file
with open(f'{username}_profile_data.json', 'w') as file:
    json.dump(user_data, file, indent=4)

# Save video data to a JSON file
with open(f'{username}_video_data.json', 'w') as file:
    json.dump(profile_video_data, file, indent=4)

# Save timeline media data to a JSON file
with open(f'{username}_timeline_media_data.json', 'w') as file:
    json.dump(profile_timeline_media_data, file, indent=4)

مکمل کوڈ

یہاں مکمل ازگر اسکرپٹ ہے جو پہلے کے تمام زیر بحث حصوں کو یکجا کرتا ہے۔ یہ کوڈ انسٹاگرام سے صارف پروفائل ڈیٹا ، ویڈیو ڈیٹا ، اور ٹائم لائن میڈیا ڈیٹا کو کھرچتا ہے ، ضروری ہیڈر اور پراکسیوں کو سنبھالتا ہے ، اور نکالا ہوا معلومات JSON فائلوں کو محفوظ کرتا ہے۔


import requests
from box import Box
import json

# Headers to mimic a real browser request to Instagram's backend API
headers = {
    "x-ig-app-id": "936619743392459", 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9,ru;q=0.8",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept": "*/*",
}

# Set a proxy to avoid rate-limiting and detection (optional)
proxies = {
    'http': 'http://<proxy_username>:<proxy_password>@<proxy_ip>:<proxy_port>',
    'https': 'https://<proxy_username>:<proxy_password>@<proxy_ip>:<proxy_port>',
}

# The Instagram username to scrape
username = 'testtest'

# Send a request to Instagram's backend API to get profile data
response = requests.get(f'https://i.instagram.com/api/v1/users/web_profile_info/?username={username}', 
                        headers=headers, proxies=proxies)
response_json = Box(response.json())  # Convert the response to Box object for easy navigation

# Extract user profile data
user_data = {
    'full name': response_json.data.user.full_name,
    'id': response_json.data.user.id,
    'biography': response_json.data.user.biography,
    'business account': response_json.data.user.is_business_account,
    'professional account': response_json.data.user.is_professional_account,
    'category name': response_json.data.user.category_name,
    'is verified': response_json.data.user.is_verified,
    'profile pic url': response_json.data.user.profile_pic_url_hd,
    'followers': response_json.data.user.edge_followed_by.count,
    'following': response_json.data.user.edge_follow.count,
}

# Extract video data from the user's video timeline
profile_video_data = []
for element in response_json.data.user.edge_felix_video_timeline.edges:
    video_data = {
        'id': element.node.id,
        'short code': element.node.shortcode,
        'video url': element.node.video_url,
        'view count': element.node.video_view_count,
        'comment count': element.node.edge_media_to_comment.count,
        'like count': element.node.edge_liked_by.count,
        'duration': element.node.video_duration,
    }
    profile_video_data.append(video_data)

# Extract timeline media data (photos and videos)
profile_timeline_media_data = []
for element in response_json.data.user.edge_owner_to_timeline_media.edges:
    media_data = {
        'id': element.node.id,
        'short code': element.node.shortcode,
        'media url': element.node.display_url,
        'comment count': element.node.edge_media_to_comment.count,
        'like count': element.node.edge_liked_by.count,
    }
    profile_timeline_media_data.append(media_data)

# Save user profile data to a JSON file
with open(f'{username}_profile_data.json', 'w') as file:
    json.dump(user_data, file, indent=4)
print(f'saved json: {username}_profile_data.json')

# Save video data to a JSON file
with open(f'{username}_video_data.json', 'w') as file:
    json.dump(profile_video_data, file, indent=4)
print(f'saved json: {username}_video_data.json')

# Save timeline media data to a JSON file
with open(f'{username}_timeline_media_data.json', 'w') as file:
    json.dump(profile_timeline_media_data, file, indent=4)
print(f'saved json: {username}_timeline_media_data.json')

انسٹاگرام کے ذریعہ انسٹاگرام کے ساتھ انسٹاگرام کے اعداد و شمار کو انسٹاگرام کے ذریعہ فراہم کردہ بیک اینڈ API کا فائدہ اٹھا کر کیا جاسکتا ہے ، جو فرنٹ اینڈ پابندیوں میں سے کچھ کو نظرانداز کرنے میں مدد کرتا ہے۔ براؤزر کے طرز عمل کی نقل کرنے کے لئے صحیح ہیڈر کا استعمال اور شرح کو محدود کرنے سے بچنے کے لئے پراکسیوں کو ملازمت دینا اہم اقدامات ہیں۔ باکس لائبریری JSON کو DOT اشارے کے ساتھ زیادہ بدیہی بنا کر عمل کو مزید آسان بناتی ہے۔ اس سے پہلے کہ آپ اسکیل پر انسٹاگرام کو کھرچنا شروع کریں ، انسٹاگرام کی خدمت کی شرائط کی تعمیل کرنا یاد رکھیں ، اور اس بات کو یقینی بنائیں کہ آپ کی کھرچنے کی کوششیں ان کی پالیسیوں کی خلاف ورزی نہیں کرتی ہیں۔

تبصرے:

0 تبصرے