اینٹی بوٹ میکانزم ، لاگ ان کی ضروریات اور شرح کی حدود کی وجہ سے انسٹاگرام ڈیٹا تک رسائی حاصل کرنا مشکل ہوسکتا ہے۔ تاہم ، آپ صحیح ٹولز اور تکنیک کے ساتھ عوامی پروفائلز سے مفید معلومات نکال سکتے ہیں۔ یہ مضمون آپ کو انسٹاگرام کے صارف کے ڈیٹا کو انسٹاگرام کے پسدید پر API کی درخواستیں کرکے ، لوٹائے گئے JSON ڈیٹا سے معلومات نکال کر ، اور اسے JSON فائل میں محفوظ کرکے API کی درخواستیں کرکے انسٹاگرام صارف کے ڈیٹا کو کھرچنے کے طریقہ کار کی رہنمائی کرے گا۔
کوڈ میں جانے سے پہلے ، یقینی بنائیں کہ آپ نے مطلوبہ ازگر لائبریریوں کو انسٹال کیا ہے۔
pip install requests python-box
ہم بہتر افہام و تفہیم کے ل code کوڈ کو مختلف حصوں میں توڑ دیں گے ، بشمول درخواست بھیجنا ، ڈیٹا حاصل کرنا اور ان کی تجزیہ کرنا ، کھوج سے بچنے کے لئے پراکسیوں کا استعمال کرنا ، اور باکس لائبریری کے ساتھ JSON پارسنگ کو آسان بنانا۔
انسٹاگرام کا فرنٹ اینڈ بہت زیادہ محفوظ ہے ، لیکن پسدید API کے اختتامی نکات کی پیش کش کرتا ہے جو بغیر کسی توثیق کے استعمال کیا جاسکتا ہے۔ ہم ان میں سے ایک پوائنٹ کو آگے بڑھنے کا استعمال کریں گے۔
یہ API صارف کے پروفائل کے بارے میں تفصیلی معلومات فراہم کرتا ہے ، جس میں ان کی تفصیل ، پیروکار کی گنتی ، اور پوسٹس شامل ہیں۔ آئیے یہ دریافت کرتے ہیں کہ ازگر میں درخواستوں کی لائبریری کا استعمال کرتے ہوئے ڈیٹا کی درخواست کیسے کریں۔
وضاحت:
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
چونکہ انسٹاگرام ایک ہی 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)
انسٹاگرام کا API ایک پیچیدہ نیسٹڈ JSON ڈھانچہ لوٹاتا ہے ، جس کو روایتی لغت پر مبنی رسائی کا استعمال کرتے ہوئے تشریف لانا مشکل ہوسکتا ہے۔ پارسنگ کو آسان بنانے کے ل we ، ہم باکس لائبریری کا استعمال کرسکتے ہیں ، جو لغت کی چابیاں کے بجائے ڈاٹ نوٹیشن کا استعمال کرتے ہوئے JSON ڈیٹا تک رسائی کی اجازت دیتا ہے۔
وضاحت:
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,
}
ایک بار پروفائل ڈیٹا نکالنے کے بعد ، ہم صارف کی ویڈیو ٹائم لائن اور باقاعدہ پوسٹس سے ڈیٹا کو کھرچ سکتے ہیں۔
وضاحت:
# 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)
ایک بار جب آپ نے تمام ڈیٹا نکال لیا تو ، اگلا قدم مزید تجزیہ یا اسٹوریج کے لئے اسے 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