Arkadaslar selamlar python requests ile bir hesaba girip bir hashtag üzerinde paylaşılan gonderileri nasil alabilirim
Tarayıcıyı açıp öncelikle instagram giriş sayfasına gitmelisiniz.
Bu sayfada giriş yapmadan önce sağ tıklayıp incele demeniz gerekiyor.
Açılan bu yan pencerede üstte sekmeler bulunacak oradan Network olanı seçin.
Network penceresinde iken sayfayı sol altta bulunan sayfaları önce temizlemek için Ø buna benzer ikona tıklayın.
Sayfayı yenileyin.
Rastgele kullanıcı adı ve parola yazıp giriş denemesinde bulunun.
Bu sırada network penceresini inceleyin.
ajax/ adında (yanlış bir terim kullanıyor olabilirim) bir html dosyası oluştuğunu göreceksiniz.
Ona tıklayıp inceleyin. Header, payload başlıklarına tıklayıp neler olduğunu inceleyin.
header sekmesinde methoda dikkatinizi verin. POST işlemi ile ilgili url’e istek atılıyormuş.
Bunu öğrendik.
Scrollu aşağı kaydıralım.
Aşağıda Request Header başlıklı bölmeye gelin.
O bölmede bizim için önemli olan user-agent ve x-csrf token
user-agent’ı kopyalayabilirsiniz.
x-csrf token’a ulaşmak için login sayfasına get işlemi ile istek atmanız gerek. Sonucunda cookielere ulaşacak ve orada bulunan csrftoken’ı alacaksınız.
Videolu anlatımı:
Doğru giriş yaptıktan sonra hesabımıza ait cookieleri bir yerde tutmamız gerekiyor o yüzden o cookieleri eğişkene kaydedin.
Hastaglerdeki paylaşımlara ulaşmak için browserdan instagramdan aramaya gelip öylesine “#edit” adında bir hastage gidiyorum. Yine Netwıork sekmesine bakıyorum.
Ve bu ?tag_name=edit verisini buluyorum:
Görüldüğü üzere buldum.
İlgili adrese get işlemi ile istek atmamız gerekiyormuş.
Cookieleri bu sayfaya istek atarken kullanıyoruz.
header bölümünde yine aşağı inip Request Headers bölmesine geliyoruz.
Burada tek farklı yapacağımız şey user-agentin: Instagram 22.0.0.15.68 Android (23/6.0.1; 640dpi; 1440x2560; samsung; SM-G935F; hero2lte; samsungexynos8890; en_US) olması.
Doğru işlemlerden sonra bize dönecek yanıt şu şekilde:
{
"count": 61150674,
"data": {
"id": "17843750815046334",
"name": "edit",
"media_count": 61150674,
"follow_status": 0,
"following": 0,
"allow_following": 1,
"allow_muting_story": true,
"profile_pic_url": "https://instagram.fyei6-3.fna.fbcdn.net/v/t51.2885-15/297151107_1072546273397084_942861446137742094_n.jpg?stp=dst-jpg_e15_fr_s1080x1080&_nc_ht=instagram.fyei6-3.fna.fbcdn.net&_nc_cat=108&_nc_ohc=B-KmXGFA97kAX9z3f8j&tn=oNO0hc_J0FZss99n&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=Mjg5ODE4OTUyMjc4MjAzMzgwMg%3D%3D.2-ccb7-5&oh=00_AT_2sAM06SyuTvliRvP0nX5CrjM867f2BNK8a8XiWp7_Iw&oe=62F62074&_nc_sid=4cb768",
"non_violating": 1,
"related_tags": null,
"subtitle": "Her hafta en popüler birkaç gönderiyi gör",
"social_context": "",
"social_context_profile_links": [],
"social_context_facepile_users": [],
"follow_button_text": null,
"show_follow_drop_down": false,
"formatted_media_count": "61,100.000",
"challenge_id": null,
"destination_info": null,
"description": null,
"debug_info": null,
"fresh_topic_metadata": null,
"promo_banner": null,
"top": {
"sections": [
{
"layout_type": "media_grid",
"layout_content": {
"medias": [
{
"media": {
"taken_at": 1659711149,
"pk": "2898189522782033802",
"id": "2898189522782033802_45133647910",
"device_timestamp": 165971113571,
"media_type": 2,
"code": "Cg4cAQFLpeK",
"client_cache_key": "Mjg5ODE4OTUyMjc4MjAzMzgwMg==.2",
"filter_type": 0,
"is_unified_video": false,
"location": {
"pk": 305271195,
"short_name": "Alight",
"facebook_places_id": 18213037461,
"external_source": "facebook_places",
"name": "Alight",
"address": "",
"city": "",
"has_viewer_saved": false,
"is_eligible_for_guides": false
},
.
.
.
Bu json çıktısı devam ediyor elbette…
Allah razi olsun hocam tesekkur ederim
Hocam tekrardan merhaba internette bu şekilde bir kod buldum siteye girebiliyorum fakat aynı cookie ile hastag linkine nasıl istek atacağimi bilmiyorum bir yol fakat çalışlmadı bunu nasıl yapabilirim How can i login in instagram with python requests? - Stack Overflow kod bu yardımcı olursanız minnettar kalırım
Bunu dener misiniz.
import requests
from datetime import datetime
def get_csrftoken() -> str:
with requests.Session() as session:
return session.get("https://www.instagram.com").cookies.get_dict()["csrftoken"] # İnstagram sayfasına ilk girişte bize verilen csrf tokeni alıyoruz
login_cookies = {}
def successfuly_login_cookies(username:str,password:str) -> bool:
global login_cookies
with requests.Session() as post_session:
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
"Referer": "https://www.instagram.com/accounts/login/",
"x-csrftoken": get_csrftoken() # İlk girişte aldığımız csrf tokeni buraya yazıyoruz
}
data = {
'username': username, # kullanıcı adımız
'enc_password': f'#PWD_INSTAGRAM_BROWSER:0:{int(datetime.now().timestamp())}:{password}', # parolamız
'queryParams': {},
'optIntoOneTap': 'false'
}
ps = post_session.post("https://www.instagram.com/accounts/login/ajax/",headers=header,data=data)
if ps.json()["authenticated"]: # giriş başarılı ise
login_cookies.update(ps.cookies.get_dict()) # cookieleri belirttiğimiz değişkenin içerisine yaz
return True # True değer döndür
else: # giriş başarısız ise
return False # False değer döndür
def hashtag_data() -> dict:
if successfuly_login_cookies("Kullanıcı Adı","Parola"): # eğer True değer dönerse
with requests.Session() as hastag_session:
header = {
"user-agent": "Instagram 22.0.0.15.68 Android (23/6.0.1; 640dpi; 1440x2560; samsung; SM-G935F; hero2lte; samsungexynos8890; en_US)",
"content-type": "application/json; charset=utf-8",
"x-csrftoken": login_cookies["csrftoken"], # giriş yaptıktan sonra hesabımıza ait csrf tokenimiz
}
data = {
"tag_name": "edit" # aratacağımız hastag kelimemiz ben aklıma gelen ilk kelimeyi yazdım
}
hs = hastag_session.get("https://i.instagram.com/api/v1/tags/web_info/?tag_name=edit",headers=header,cookies=login_cookies,data=data)
return hs.json()
if __name__ == "__main__":
print(hashtag_data())
Hocam ne kadar teşekkür etsem az çok sağolun son bir soru bu json çıktısını hesaplara göre nasıl ayarlayabilirim. yani gelen jsonu nasıl parçalayabilirim hangi kısımdan ayırmam gerek
Json bir dictionary türünde çıktı.
Pythonda dictionaryler ile uğraştınız mı ?
Uğraştım hocam ama bu çok karışık geldi
hocam burada ’ tırnak ile veriler gösteriliyor siteye yapıştırınca olmuyor çift tırnak olması gerek bunu tek tek mı çıft tırnağa çevirmem gerek
İnstagrama browserdan girip response’u oradan alın
Öylesi çok daha kolay
Teşekkür ederim hocam