Всем привет. Меня зовут Денис и я уже давно занимаюсь инстой v 2.0. Рад представить на обсуждение полезную тему по парсингу приватных контактных данных с Instagram.
Все, наверное, знают, что ест куча парсеров контактов из Instagram - 99% их работает через веб и парсят Имя+описание к аккаунту. Конечно, такой способ парсинга контактов под рассылки или другие задачи неплохой, но обычно этим почти все занимаются и выхлоп с таких контактов не всегда тот, который ожидаешь. Другое дело, это почта и имейл, которые указаны в самом аккаунте, как привязаные. Об этом способе я и попробую рассказать.
Многие видели, что в мобильном приложении при переходе в аккаунт есть кнопка Контакт, которую, если нажать, выдается мобильный номер и/или почтовый ящик. Это совсем не те данные, которые можно просмотреть в вебе, обычно, и их через веб спарсить НЕЛЬЗЯ. Вот мы эти контакты и будем парсить. Мы будем снифать сам Instagram в мобильной версии на предмет этих контактов.
Так как работа будет происходить через мобильное приложение - нам нужен мобильный телефон/виртуалка и само приложение. Да, в приложении надо выключать ssl сертификат, это вопрос отдельной статьи, поэтому я пошел путем попроще. На гите есть уже отломанная apk, которую можно использовать -
https://github.com/itsMoji/Instagram_SSL_Pinning На текущий момент актуальная версия API, которая отломаная 187.0.0.32.120. Нам нужен
Non-Root Method (Recommended).
1. Качаем уже отломаную APK, а конкретно
patched APK здесь
https://github.com/itsMoji/Instagram_SSL_Pinning/tree/master/non-root/x86
2. Потом качаем Genymotion здесь
https://www.genymotion.com/ и VirtualBox, если он не установлен.
3. После этого ставим одну виртуалку, важно ставить на 9 Android API, на 10 у меня она очень глючит.
4. Ставим Instagram APK в виртуальную машину эту
5. Запускаем APK 1 раз - оптимально попробовать вбить какието данные под логин и пароль, можно 1 и 1, и подождать секунд 10
6. Качаем BURP для снифинга. Важно качать 1 версию Burp, вторым не можно будет отснифать приложение, я качал отсюда версию 1.7.36
https://portswigger.net/burp/releases/download?product=community&version=1.7.36&type=Jar - не забудьте переименовать в файл burpsuite_community.jar
7. Ставим Java - Windows В автономном режиме (64-разрядная версия)
https://www.java.com/ru/download/manual.jsp
8. Закидываем Burp JAR файл в папку с Java - /bin/java, типа сюда C:\Program Files\Java\jdk-11.0.5\bin
9. Через cmd запускаем Burp - коммандами
cd C:\Program Files\Java\jdk-11.0.5\bin
java -jar burpsuite_community.jar
10. Проходим все пути и выключаем Intercept, а именно Proxy >> Intercept >> нажать на кнопку Intercept in on (должна стать off)
11. Включаем Burp как прокси - Proxy >> Options >> Edit >> All interfaces (смотрим и запоминаем, какие там локальные IP предлагает BURP и запоминаем их)
12. На этой же вкладке для установки сертификата на нашу виртуальную машину его экспортируем Import/Export certificate >> Export >> Certificate in DER format и сохраняем его у себя гдето с расширением crt
13. Идем в виртуалку - ВАЖНО закрыть приложение Instagram, которое было открыто
14. Перетаскиваем сертификат в виртуалку и устанавливаем его
15. Устанавливаем прокси в виртуалке (ip и порт ставим из пункта 11)
16. Теперь нужно зайти под любым своим инстаграм аккаунтом, пройти вручную чекпоинты, если они будут и зайти в поиск и набрать любую бизнесс тематику, например - маникюр Москва и перейти в аккаунт. Надо чтобы в аккаунте была кнопка Contact.
При этом в самом Burp будет примерно такой запрос
в ответе к которому и будут данные, что нам нужны contact_phone_number и public_email.
{"user":{"pk":5530817939,"username":"izzo.studio","full_name":"МАНИКЮР ⋆ МОСКВА ⋆ АРБАТ","is_private":false,"profile_pic_url":"https://instagram.fdnk1-2.fna.fbcdn.net/v/t51.2885-19/s150x150/90868856_2674990936076951_3818198919389642752_n.jpg?tp=1\u0026_nc_ht=instagram.fdnk1-2.fna.fbcdn.net\u0026_nc_ohc=6ibDV3HQXMMAX9ddoWS\u0026edm=AEF8tYYBAAAA\u0026ccb=7-4\u0026oh=b8b9805be8d4bec33dcceb6aa4692237\u0026oe=60B18763\u0026_nc_sid=a9513d","profile_pic_id":"2271124161737277298_5530817939","is_verified":false,"has_anonymous_profile_picture":false,"media_count":232,"geo_media_count":0,"follower_count":9361,"following_count":444,"following_tag_count":0,"biography":"Стань на маникюр счастливее\n▫воплотим любую идею\n▫реально стерильно\n▫трендовый дизайн и топ-цвета\nдемократичные цены \nблизко к метро\nЖмите","biography_with_entities":{"raw_text":"Стань на маникюр счастливее\n▫воплотим любую идею\n▫реально стерильно\n▫трендовый дизайн и топ-цвета\nдемократичные цены \nблизко к метро\nЖмите","entities":[]},"biography_product_mentions":[],"external_url":"https://taplink.cc/izzo.studio","external_lynx_url":"https://l.instagram.com/?u=https%3A%2F%2Ftaplink.cc%2Fizzo.studio\u0026e=ATMaEiRBkKJKeZTo88iGJ2sQLfAK8ImEG3NNaJA7tNGCk5BQklQDr5IcWChOc-9T14HJ-G2PQC6nh5FVwlZB2K4\u0026s=1","has_biography_translation":true,"total_igtv_videos":0,"has_videos":true,"total_ar_effects":0,"usertags_count":49,"is_favorite":false,"is_favorite_for_stories":false,"is_favorite_for_igtv":false,"is_favorite_for_clips":false,"is_favorite_for_highlights":false,"live_subscription_status":"default","is_interest_account":true,"has_chaining":true,"hd_profile_pic_versions":[{"width":320,"height":320,"url":"https://instagram.fdnk1-2.fna.fbcdn.net/v/t51.2885-19/s320x320/90868856_2674990936076951_3818198919389642752_n.jpg?tp=1\u0026_nc_ht=instagram.fdnk1-2.fna.fbcdn.net\u0026_nc_ohc=6ibDV3HQXMMAX9ddoWS\u0026edm=AEF8tYYBAAAA\u0026ccb=7-4\u0026oh=23d06558640d4b1e6fc4604b4ebd6610\u0026oe=60B2475B\u0026_nc_sid=a9513d"},{"width":640,"height":640,"url":"https://instagram.fdnk1-2.fna.fbcdn.net/v/t51.2885-19/s640x640/90868856_2674990936076951_3818198919389642752_n.jpg?tp=1\u0026_nc_ht=instagram.fdnk1-2.fna.fbcdn.net\u0026_nc_ohc=6ibDV3HQXMMAX9ddoWS\u0026edm=AEF8tYYBAAAA\u0026ccb=7-4\u0026oh=36d92ca54e7e5876afd8a07cda182179\u0026oe=60B245A2\u0026_nc_sid=a9513d"}],"hd_profile_pic_url_info":{"url":"https://instagram.fdnk1-2.fna.fbcdn.net/v/t51.2885-19/90868856_2674990936076951_3818198919389642752_n.jpg?_nc_ht=instagram.fdnk1-2.fna.fbcdn.net\u0026_nc_ohc=6ibDV3HQXMMAX9ddoWS\u0026edm=AEF8tYYBAAAA\u0026ccb=7-4\u0026oh=930a8e29566098f654d5adb15279ec3c\u0026oe=60B25E1B\u0026_nc_sid=a9513d","width":1080,"height":1080},"mutual_followers_count":0,"has_highlight_reels":true,"has_guides":false,"show_shoppable_feed":false,"shoppable_posts_count":0,"can_be_reported_as_fraud":false,"merchant_checkout_style":"none","seller_shoppable_feed_type":"none","num_visible_storefront_products":0,"storefront_attribution_username":null,"creator_shopping_info":{"linked_merchant_accounts":[]},"is_eligible_for_smb_support_flow":true,"displayed_action_button_partner":null,"smb_delivery_partner":null,"smb_support_delivery_partner":null,"displayed_action_button_type":"","direct_messaging":"UNKNOWN","fb_page_call_to_action_id":"","address_street":"Nikitsky Boulevard, 12","business_contact_method":"CALL","category":"Health/Beauty","city_id":115085015172389,"city_name":"Moscow, Russia","contact_phone_number":"+79670521085","is_call_to_action_enabled":false,"latitude":55.75561,"longitude":37.60052,"public_email":"[email protected]","public_phone_country_code":"7","public_phone_number":"9670521085","zip":"","instagram_location_id":"","is_business":true,"account_type":2,"professional_conversion_suggested_account_type":3,"can_hide_category":true,"can_hide_public_contacts":true,"should_show_category":true,"should_show_public_contacts":true,"is_facebook_onboarded_charity":false,"has_active_charity_business_profile_fundraiser":false,"charity_profile_fundraiser_info":{"pk":5530817939,"is_facebook_onboarded_charity":false,"has_active_fundraiser":false,"consumption_sheet_config":{"can_viewer_donate":false,"currency":null,"donation_url":null,"privacy_disclaimer":null,"donation_disabled_message":"We're having trouble connecting right now. Please try your donation another time.","donation_amount_config":{"donation_amount_selector_values":[],"default_selected_donation_value":null,"minimum_donation_amount":null,"maximum_donation_amount":null,"prefill_amount":null,"user_currency":null},"you_donated_message":null,"profile_fundraiser_id":null,"has_viewer_donated":null}},"standalone_fundraiser_info":{"has_active_fundraiser":false,"fundraiser_id":null,"fundraiser_title":null,"fundraiser_type":null,"formatted_goal_amount":null,"beneficiary_username":null,"formatted_fundraiser_progress_info_text":null,"percent_raised":null},"account_badges":[],"whatsapp_number":"","pronouns":[],"include_direct_blacklist_status":true,"is_potential_business":true,"show_post_insights_entry_point":true,"request_contact_enabled":false,"is_bestie":false,"has_unseen_besties_media":false,"show_account_transparency_details":true,"auto_expand_chaining":false,"highlight_reshare_disabled":false,"is_memorialized":false,"open_external_url_with_in_app_browser":true},"status":"ok"}
Безусловно, там есть и другие данные, как имя, описание к аккаунту и прочему, их тоже можно парсить, если нужно, да и лимиты на такой парсинг намного вкуснее, если парсить через веб.
Сам запрос выглядит вот так примерно, данные, которые не обязательны я не отправляю
GET /api/v1/users/5530817939/info/?from_module=blended_search HTTP/1.1
X-IG-App-Locale: en_US
X-IG-Device-Locale: en_US
X-IG-Mapped-Locale: en_US
X-Pigeon-Session-Id: 25047c51-229d-4de6-a809-74e043907c50
X-IG-Bandwidth-Speed-KBPS: -1.000
X-IG-Bandwidth-TotalBytes-B: 0
X-IG-Bandwidth-TotalTime-MS: 0
X-Bloks-Version-Id: e097ac2261d546784637b3df264aa3275cb6281d706d91484f43c207d6661931
X-Bloks-Is-Layout-RTL: false
X-Bloks-Is-Panorama-Enabled: true
X-IG-Device-ID: d45cfacf-9663-4c8d-ab6e-604aafeda5ab
X-IG-Family-Device-ID: c83e6188-2160-4550-975a-ecab5f066e81
X-IG-Android-ID: android-bef52164389dac67
X-IG-Timezone-Offset: -14400
X-IG-Connection-Type: WIFI
X-IG-Capabilities: 3brTvx0=
X-IG-App-ID: 567067343352427
User-Agent: Instagram 187.0.0.32.120 Android (28/9; 560dpi; 1440x2872; Genymotion/Android; Samsung Galaxy S10; vbox86p; vbox86; en_US; 289692202)
Accept-Language: en-US
Cookie: mid=YKtxZAABAAGeWNltqXIQ43V_9zDI; sessionid=47728498568%3AhiKB7gCuIeSVq7%3A28; csrftoken=aNZTtwXXvcOYr3R0QfAwR05JuaD8Kj4b; rur=PRN; ds_user_id=47728498568
Authorization: Bearer
X-MID: YKtxZAABAAGeWNltqXIQ43V_9zDI
IG-U-DS-USER-ID: 47728498568
IG-U-RUR: PRN
IG-INTENDED-USER-ID: 47728498568
Accept-Encoding: gzip, deflate
Host: i.instagram.com
X-FB-HTTP-Engine: Liger
X-FB-Client-IP: True
X-FB-Server-Cluster: True
Connection: close
Вот запрос этот мы и будем эмулировать, чтобы получить данные с аккаунтов. Для массовой работы лучше покупать аккаунты с куками в формате Инстамен, на всем известном сайте - в личке и здесь просьба не спрашивать какой, не дам, ищите в поиске. Да и рекомендовать какойто магазин - это так себе затея. Ну и еще одним из минусов такого парсинга есть то, что такие контакты только в бизнесс аккаунтах есть, в простых аккаунтах - нет. Но при правильной работе и прямых руках, это очень ценный парсинг под свою базу. Для парсинга я использовал
https://rsocks.net/ по-моему самые лучшие прокси на данный момент. Конвертировать логины в id можно любым софтом, который есть на вооружении, каждый из них имеет такой функционал. Сегодня до конца дня залью видео с подробным мануалом, как это все делать.
Также приглашаю всех в группу по интересам - ламповую, по зеннопостеру и заработку на нем