
أداة OSINT لإنستغرام لجمع جميع المواقع المحددة جغرافياً (geotagged) المتاحة على حساب إنستغرام بهدف رسمها على خريطة، وتفريغها في ملف JSON.
TL;DR : ascineema, فيديو المشروع
أداة لاستخراج المواقع المُحدّدة جغرافياً من ملفات تعريف Instagram. المخرجات بتنسيق JSON وخريطة تفاعلية.
sudo apt install chromium-chromedriver && chmod a+x /usr/bin/chromedriver
git clone https://github.com/bernsteining/instaloctrack
cd instaloctrack
pip3 install .
أو استخدم Docker:
sudo docker build -t instaloctrack -f Dockerfile .
instaloctrack -h
usage: instaloctrack [-h] [-t TARGET_ACCOUNT] [-l LOGIN] [-p PASSWORD] [-v]
أداة جمع بيانات مواقع Instagram. الاستخدام: python3 instaloctrack.py -t <target_account>
الوسائط الاختيارية:
-h, --help عرض رسالة المساعدة هذه والخروج
-t TARGET_ACCOUNT, --target TARGET_ACCOUNT
ملف تعريف Instagram للتحقيق
-l LOGIN, --login LOGIN
ملف تعريف Instagram للاتصال به، للوصول إلى
منشورات Instagram للحساب المستهدف
-p PASSWORD, --password PASSWORD
كلمة مرور ملف تعريف Instagram للاتصال به
-v, --visual تشغيل واجهة Chromium الرسومية، وإلا فسيكون Chromium بدون واجهة
مثال
instaloctrack -t <target_account>
إذا كان الملف الشخصي المستهدف خاصاً وكان لديك حساب يتابع الملف الشخصي المستهدف، يمكنك استخراج البيانات باستخدام جلسة متصلة:
instaloctrack -t <target_account> -l <your_account> -p <your_password>
أو باستخدام Docker:
sudo docker run -v /tmp/output:/tmp/output instaloctrack -t <target_account> -o /tmp/output
أولاً، نقوم باسترداد جميع روابط الصور للحساب عن طريق التمرير عبر ملف تعريف Instagram بأكمله، بفضل webdriver من selenium.
ثم، نقوم باسترداد كل رابط صورة بشكل غير متزامن (asyncio)، ونتحقق مما إذا كان يحتوي على موقع في وصف الصورة، ونسترجع بيانات الموقع إن وجد، والطابع الزمني.
لأن Instagram لا يوفر إحداثيات GPS، ونحن لا نحصل إلا على أسماء الأماكن، يتعين علينا ترميز هذه الإحداثيات جغرافياً (أي الحصول على إحداثيات GPS من اسم المكان).
لهذا، استخدمت واجهة برمجة تطبيقات Nominatim الرائعة، والتي تستخدم OpenStreetMap. لاستخدامنا، لا يلزم وجود مفتاح API، ونحن نحترم سياسة استخدام Nominatim من خلال طلب إحداثيات GPS مرة كل ثانية.
في النهاية، بمجرد حصولنا على جميع إحداثيات GPS، نقوم بإنشاء HTML (بفضل قوالب jinja2) مع جافاسكريبت مضمن يرسم خريطة Open Street Map (بفضل مكتبة Leaflet) مع تثبيت جميع مواقعنا. مرة أخرى، لا يلزم وجود مفتاح API لهذه الخطوة.
أيضاً، يتم تفريغ البيانات التي تم جمعها بواسطة البرنامج النصي (أسماء المواقع، الطوابع الزمنية، إحداثيات GPS، الأخطاء) إلى ملف JSON لإعادة استخدامها.
كمثال، إليك المخرجات على ملف تعريف Instagram للرئيس الفرنسي السابق، @fhollande:




تفريغ بيانات JSON (جزء منه فقط لإظهار التنسيق لموقع معين):
{
"link": "https://www.instagram.com/p/-Q_9EvR9eu",
"place": {
"id": "290297",
"name": "Musée du quai Branly - Jacques Chirac",
"slug": "musee-du-quai-branly-jacques-chirac",
"street_address": " 37 quai Branly",
" zip_code": " 75007",
" city_name": " Paris",
" region_name": " ",
" country_code": " FR"
},
"timestamp": "2015-11-19",
"gps": {
"lat": "48.8566969",
"lon": "2.3514616"
}
}