create account

Tx b37fbcef84bb312dec07c537ec78fcae898f25e2@33060091

Included in block 33,060,091 at 2019-05-20 01:51:12 (UTC)


Raw transaction

ref_block_num29,927
ref_block_prefix1,009,754,533
expiration2019-05-20 02:01:00
operations
0.
0.comment
1.
parent_author""
parent_permlinkcoogger
authorhakancelik
permlinkinstagram-botu
title"Instagram Botu"
body"<center>
<a href="https://www.coogger.com/@hakancelik/instagram-botu">
<img alt="" src="https://www.coogger.com/media/images/instagram-python.jpg">
</a>
<a href="https://www.coogger.com/@hakancelik/instagram-botu">Read this content on coogger</a>
</center>
"
json_metadata"{"format": "markdown", "tags": ["coogger", "instagram", "python", "tr", "bot"], "app": "coogger/1.4.1", "ecosystem": {"version": "1.4.1", "body": "[TOC]\r\n\r\n<img gnrl=\"center\" src=\"https://www.coogger.com/media/images/instagram-python.jpg\">\r\n\r\n### Neler \u00d6\u011frenece\u011fiz ;\r\n\r\n- S\u0131n\u0131f yap\u0131s\u0131n\u0131 instagram botu yaparak peki\u015ftirece\u011fiz.\r\n- S\u0131n\u0131f yap\u0131s\u0131nda bulunan @staticmethod decorator'\u00fcn\u00fc \u00f6\u011frenece\u011fiz.\r\n- requests k\u00fct\u00fcphanesini kullanarak g\u00fczel bir bot yapaca\u011f\u0131z.\r\n\r\n### Botumuzun \u015fuan ki yapabildikleri\r\n\r\n- Kullan\u0131c\u0131 ad\u0131n\u0131z ve \u015fifreniz ile oturum a\u00e7mak, \u00e7ift do\u011frulama olay\u0131n\u0131 hen\u00fcz eklemedim.\r\n- Bir kullac\u0131 ad\u0131n\u0131 girerek onun bilgilerine ula\u015fmak - gizli hesap ise daha \u00e7ok bilgi i\u00e7in oturum a\u00e7man\u0131z ve ki\u015finin sizde ekli olmas\u0131 gerek.\r\n- Yeni bir hesap a\u00e7mak\r\n- Kullan\u0131c\u0131 isimlerine g\u00f6re takip etmek veya takibi b\u0131rakma\r\n- \u00e7\u0131k\u0131\u015f yapmak\r\n\r\n> Birde botumuz rastgele bir useragent bilgisi alabilmekte ve proxy de\u011fi\u015ftirerek farkl\u0131 konumlardan i\u015flemler ger\u00e7ekle\u015fiyor gibi g\u00f6sterilmekte\r\nBundan dolay\u0131 bir keyword haz\u0131rlay\u0131p bu bot ile bir bruteforce yazsan\u0131z i\u015flem yapt\u0131\u011f\u0131n\u0131z ki\u015fiye hesab\u0131n\u0131za giri\u015f yap\u0131lmaya \u00e7al\u0131\u015f\u0131ld\u0131 gibi bir bildirim gitti\u011finde ger\u00e7ek konumuz de\u011filde sahte konumunuz gider,ama instagram siz proxy kullansan\u0131z bile max 19 istek gibi bir say\u0131da engelliyor ve siz \u015fifreyi do\u011fru yazsan\u0131z bile giri\u015f vermiyor ki\u015fi bir s\u00fcreli\u011fine sadece telefonundan girebiliyor. Peki bunu nas\u0131l yap\u0131yor bir web birde mobil olarak ay\u0131rm\u0131\u015f ona g\u00f6re \u00e7erez vermi\u015f olabilir web den 19 istek her ne \u015fekilde gelirse gelsin bunu zaman damgas\u0131 ile gelen istek say\u0131s\u0131n\u0131 kay\u0131t eder ve 2 saat s\u00fcresince 19 istek atm\u0131\u015f ise engellensin ve \u015fifre do\u011fru olsa bile web'den girilmesin \u015feklinde bir algoritma kullanm\u0131\u015f ise i\u015fe yarayacakt\u0131r diye d\u00fc\u015f\u00fcn\u00fcyorum.\r\n\r\n## Yapal\u0131m \u015eu Lanet Botu.\r\n\r\nBu adresten geli\u015fmeleri takip edebilirsiniz.\r\n\r\n\u00d6nce gerekli k\u00fct\u00fcphaneleri dahil edelim projemize\r\n\r\n```python\r\nimport time\r\nimport sys\r\nimport random\r\nimport json\r\nimport requests\r\nfrom lib import fake\r\n```\r\n> lib/ fake de nedir diyorsan\u0131z bu useragent bilgilerinin bulundu\u011fu uzun bir s\u00f6zl\u00fck.\r\n\r\nAdres ise \u015fu\r\n\r\n[fake.py](https://github.com/hakancelik96/instagram/blob/e9d1919b2f0cd3e299b997d6fe7314f9dfdfd73c/src/lib/fake.py)\r\n\r\nBurdan indirin.\r\n\r\n```python\r\nclass Instagram():\r\n def __init__(self, username, password, proxy = False):\r\n self.username = username\r\n self.password = password\r\n self.isloggedin = False\r\n self.instagram_url = \"https://www.instagram.com/\"\r\n self.instagram_login_url = \"https://www.instagram.com/accounts/login/ajax/\"\r\n self.instagram_signup_url = \"https://www.instagram.com/accounts/web_create_ajax/\"\r\n self.instagram_logout_url = \"https://www.instagram.com/accounts/logout/\"\r\n self.user_info_url = \"https://www.instagram.com/{}/?__a=1\"\r\n self.follow_url = \"https://www.instagram.com/web/friendships/{}/follow/\"\r\n self.unfollow_url = \"https://www.instagram.com/web/friendships/{}/unfollow/\"\r\n self.useragent = self.random_ua()[\"User-Agent\"] # rastgele bir useragent bilgisi olu\u015fturan fonksiyon\r\n self.s = requests.Session() # session \r\n self.s.proxies = self.random_proxy() if proxy else {} # ki\u015fi 3.paremtere de proxy kullan\u0131m\u0131na True yazm\u0131s ise random_proxy fonksiyonundan rastegele bir adres al\u0131yoruz\r\n self.s_get = self.s.get(\"https://www.instagram.com/\") # ve instagram.com'a ba\u011flan\u0131yoruz\r\n```\r\n\r\n\u0130lk \u00f6nce Instagram ad\u0131nda bir s\u0131n\u0131f\u0131m\u0131z\u0131 tan\u0131mlad\u0131k ve 3 tane parametre verdik bunlar\u0131 __init__ fonksiyonuna yaz\u0131k bildi\u011finiz gibi s\u0131n\u0131flarda init fonksiyonu s\u0131n\u0131f \u00f6rneklenince \u00e7al\u0131\u015fan ve return i\u015flemi uygulanmayan bir fonksiyondur. Self. \u00f6n eki ile de yazd\u0131\u011f\u0131m\u0131z de\u011fi\u015fkenleri s\u0131n\u0131f\u0131m\u0131z\u0131 \u00f6rneklerdikten sonra @classmethod veya @staticmethod olarak tan\u0131mlamad\u0131\u011f\u0131m\u0131z b\u00fct\u00fcn fonksiyonlarda yine self. \u00f6n eki ile eri\u015febiliriz. \u015eimdi burada instagram i\u015flemleri i\u00e7in bir ka\u00e7 adres var peki ben bu adresleri nerden buldum yapmak istedi\u011fim i\u015flem her ne ise instagram.com'a gidip resimde g\u00f6rm\u00fc\u015f oldu\u011funuz gibi network de g\u00f6r\u00fcnen giden gelen isteklere bakmak ve daha sonra requests k\u00fct\u00fcphanesini kullanarak bu istekleri taklit etmek genel botu bu \u015fekilde yap\u0131yoruz mesela takip olay\u0131n\u0131 yapacaksak bir kullan\u0131c\u0131 profiline gidip follow tu\u015funa bas\u0131yoruz ve giden iste\u011fin adresini bulup post mu get mi yapm\u0131\u015f ona bak\u0131yoruz daha sonra da bunu taklit ediyoruz.\r\n\r\n<img gnrl=\"center\" src=\"https://www.coogger.com/media/images/instagram-console.jpg\">\r\n\r\n\u015fimdi yukarda kullan\u0131c\u0131 ad\u0131 ve \u015fifreyi ald\u0131k i\u015flem ger\u00e7ekle\u015fecek adresleride bulduk.\r\n\u015eimdi s\u0131n\u0131f\u0131m\u0131n\u0131zn di\u011fer fonksiyonlar\u0131n\u0131 yapmaya ge\u00e7elim baz\u0131 yap\u0131lmam\u0131\u015f fonksiyonlar var init fonksiyonumuzda \u015fimdi onlar\u0131 ve di\u011ferlerini yapal\u0131m.\r\n\r\n#### Init Fonksiyonunda Kulland\u0131\u011f\u0131m\u0131z Fonksiyonlar\r\n\r\n```python\r\n @staticmethod\r\n def random_ua():\r\n explorer = [\"chrome\", \"opera\", \"firefox\", \"internetexplorer\", \"safari\"]\r\n ex = fake.ua[\"browsers\"][explorer[random.randrange(len(explorer))]] # fake olarak import etti\u011fimiz s\u00f6zl\u00fck bi\u00e7imli dosyam\u0131zdan faydalanarak al\u0131yoruz\r\n useragent = ex[random.randrange(len(ex))]\r\n return {'User-Agent': useragent}\r\n\r\n @staticmethod\r\n def random_proxy():\r\n json_data = requests.get(\"https://freevpn.ninja/free-proxy/json\").json()\r\n # possible alternate proxies\r\n # \"https://gimmeproxy.com/api/getProxy\"\r\n # \"https://getproxylist.com/\"\r\n\r\n json_ip = []\r\n # We are just selecting https and http types\r\n for i in json_data:\r\n if i[\"type\"] in [\"http\", \"https\"]:\r\n json_ip.append({\"type\": i[\"type\"], \"proxy\": i[\"proxy\"]})\r\n\r\n if len(json_ip) == 0: # If we dont have any http / https proxies\r\n return {}\r\n\r\n num = random.randrange(len(json_ip))\r\n json_proxy = json_ip[num]\r\n return {json_proxy[\"type\"]: \"{}://{}\".format(json_proxy[\"type\"], json_proxy[\"proxy\"])}\r\n```\r\n\r\n@staticmethod decorator'\u00fc olarak tan\u0131mlad\u0131\u011f\u0131m\u0131z s\u0131n\u0131f i\u00e7i fonksiyonlar yine s\u0131n\u0131f\u0131n bir eleman\u0131 olup s\u0131n\u0131fla pek ba\u011flant\u0131s\u0131 olmayan fonksiyonlard\u0131r @staticmethod decoratorleri self parametresini almaz \u00e7\u00fcnk\u00fc az \u00f6nce dedi\u011fimiz gibi s\u0131n\u0131f\u0131n \u00f6\u011feleri ile pek i\u015fi yoktur ve bu fonksiyonlar s\u0131n\u0131f \u00f6rneklemeden \u00e7a\u011f\u0131r\u0131p kullanabilirsiniz yan\u0131 \u015fu \u015fekilde ***Instagram.random_ua()*** bunu yaparsan\u0131z size random bir useragent verecekt\u0131r.\r\n\r\nYukar\u0131daki ***random_ua()*** fonksiyonu nas\u0131l \u00e7al\u0131\u015f\u0131yor derseniz **fake.py** dosyam\u0131zdaki s\u00f6zl\u00fck tipindeki useragent bilgilerini rastgelen **[\"chrome\", \"opera\", \"firefox\", \"internetexplorer\", \"safari\"]** bunlardan birini se\u00e7erek( random modul\u00fc ile yap\u0131yor bunu) yine fake i\u00e7inde rast gelen bir agent bilgisini s\u00f6zl\u00fck kurallar\u0131na g\u00f6re al\u0131yor.\r\n\r\n**random_proxy()** fonksiyonu ise yine static bir fonksiyon olup https://freevpn.ninja/free-proxy/json bu adresten json format\u0131nda adresleri al\u0131yor ve ald\u0131\u011f\u0131 t\u00fcm adreslerden rastgele bir proxy se\u00e7ip https://123.123.12.12 \u015feklinde \u00e7\u0131kt\u0131 olarak veriyor, e\u011fer ip bulamam\u0131ssa bo\u015f d\u00f6nd\u00fcr\u00fcyor\r\n\r\nArkada\u015flar g\u00f6n\u00fcl isterdiki her ad\u0131m\u0131 anlatay\u0131m ama bir\u015feyler bilerek bu yaz\u0131y\u0131 oludu\u011funuzu varsay\u0131yorum \u00e7\u00fcnk\u00fc bir ton ba\u015flang\u0131\u00e7 kaynaklar\u0131 videolar\u0131 ve kurslar\u0131 var yani ben burda random nas\u0131l \u00e7al\u0131\u015f\u0131yor anlatamam ( ama yinede anlat\u0131yorum fakat s\u00f6zl\u00fck liste i\u015flemlerini ad\u0131m ad\u0131m anlatamam ) bilmeyenler l\u00fctfen \u00f6\u011frenip gelsin.\r\n\r\n\u015eimdi bir json \u00e7\u0131kt\u0131lar\u0131m\u0131z i\u00e7in bir fonksiyon yazal\u0131m ki s\u00fcrekli kodlar tekrar etmesin.\r\n\r\n```python\r\n def json_loads(self, req):\r\n r = {}\r\n try:\r\n r = json.loads(req.text)\r\n except Exception as e:\r\n print(\"An Error Occured! Details :\\n\",sys.exc_info())\r\n try:\r\n if r[\"authenticated\"] == True:\r\n self.isloggedin = True\r\n except:\r\n pass\r\n finally:\r\n self.s_get = self.s.get(self.instagram_url)\r\n return r\r\n```\r\n\r\ngelen veriyi req i\u00e7ine att\u0131k normalde instagram dan gelen veriyo bu \u015fekilde yapmadan \u00e7\u0131kt\u0131 vermeye \u00e7al\u0131\u015fsak <200>, <403> gibi status kodlar\u0131 gelir. gelen req verisini req.text yaparak metin halinde ald\u0131k ve json format\u0131na d\u00f6n\u00fc\u015ft\u00fcrd\u00fck **json.loads()** diyerek.\r\n\r\nHatalar\u0131m\u0131z olmu\u015fsa ekrana bast\u0131k\r\n\r\nve gelen veride **r[\"authenticated\"]** \u015fu bilgiye bakt\u0131k bu ki\u015finin oturum a\u00e7\u0131p a\u00e7mad\u0131\u011f\u0131 bilgisidir True ise oturum a\u00e7m\u0131\u015f demektir, e\u011fer a\u00e7m\u0131\u015f ise **isloggedin** de\u011fikenimze durumu bildirdik ve daha sonra herhangi bir \u00e7erez session de\u011fi\u015fmesine kar\u015f\u0131n tekrar **self.s.get(self.instagram_url)** diyerek o bilgileri ald\u0131k bunu \u015fundan dolay\u0131 yap\u0131yoruz ki\u015fi oturum a\u00e7mi\u015f ve bu fonksiyon \u00e7al\u0131\u015fm\u0131\u015f ise oturum a\u00e7\u0131nca instagram\u0131n verdi\u011fi \u00e7erez bilgisini al\u0131yoruz g\u00fcncellemi\u015f oluyoruz.\r\n\r\n### Login()\r\n\r\n```python\r\n def login(self):\r\n form_data={\"username\": self.username, \"password\": self.password}\r\n self.s.headers.update({\r\n 'UserAgent': self.useragent,\r\n 'x-instagram-ajax': '1',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n 'origin': self.instagram_url,\r\n 'ContentType': 'application/x-www-form-urlencoded',\r\n 'Connection': 'keep-alive',\r\n 'Accept': '*/*',\r\n 'Referer': 'https://www.instagram.com/accounts/login/',\r\n 'authority': 'www.instagram.com',\r\n 'Host' : 'www.instagram.com',\r\n 'Accept-Language': 'en-US;q=0.6,en;q=0.4',\r\n 'Accept-Encoding': 'gzip, deflate'\r\n })\r\n self.s.headers.update({'X-CSRFToken': self.s_get.cookies.get_dict()['csrftoken']})\r\n r = self.s.post(self.instagram_login_url, data=form_data)\r\n return self.json_loads(r)\r\n```\r\n\r\nYine basitce deniyelim, g\u00f6nderilen form verileri kullanc\u0131 ad\u0131 ve \u015fifre ba\u015fka yok daha sonra taklit etmemiz gereken headers bilgisi var buda web geli\u015ftirici konsolunu a\u00e7t\u0131\u011f\u0131n\u0131zda g\u00f6r\u00fcn\u00fcyor gereken bilgileri doldurduk ve bu bilgileri **self.s.headers.update** (self.s) hep ba\u011fl\u0131 kald\u0131\u011f\u0131m\u0131z \u00e7erez ve session bilgisini ip adresimi zi ( proxy ) tutar ve istekleri ona g\u00f6re yapar. bu y\u00fczden hep bu \u015fekilde yap\u0131yoruz.Django da da bulunan csrftoken bilgisini iste\u011fimizden \u00f6nce siteden **self.s.headers.update({'X-CSRFToken': self.s_get.cookies.get_dict()['csrftoken']})**\r\n\r\nbu kodlar ile al\u0131yoruz ve headeri tekrar g\u00fcncelliyoruz sonda **self.s.post** ile bu bilgiler i\u015fi\u011finde post iste\u011fimizi yap\u0131yor ve art\u0131k login olmu\u015f oluyoruz.\r\n\r\n### Logout()\r\n\r\n```python\r\n def logout(self):\r\n r = self.s.get(self.instagram_logout_url)\r\n self.isloggedin = False\r\n return r\r\n```\r\n\r\n\u00c7\u0131k\u0131\u015f yaparken pek bir\u015fey yok yine **self.s** i kullanarak \u00e7\u0131k\u0131\u015f yapmam\u0131z\u0131 sa\u011flayan **self.instagram_logout_url** adresine get iste\u011finde bulunuyoruz ve tamam \u00e7\u0131k\u0131\u015f yapt\u0131\u011f\u0131m\u0131z i\u00e7inde isloggedin false yap\u0131yoruz neden hemen \u00e7\u0131k\u0131\u015f yapabildik derseniz zaten bize ait olan b\u00fct\u00fcn bilgiler **self.s** in i\u00e7inde oldu\u011fu i\u00e7in ek bir \u015feye gerek kalmad\u0131.\r\n\r\n### Userinfo()\r\n\r\n```python\r\n def userinfo(self,username): \r\n if self.isloggedin: # oturum acildiktan sonra erisilebilen bilgiler\r\n user_info = self.user_info_url.format(username)\r\n req = self.s.get(user_info)\r\n else: # oturum ac\u0131lmadan erisilebilen bilgiler\r\n user_info = \"https://www.instagram.com/{}/?__a=1\".format(username)\r\n req = requests.get(user_info)\r\n info = json.loads(req.text)\r\n return info\r\n```\r\n\r\n\u015fimdi burda **isloggedin** de\u011fi\u015fkeni ile oturum a\u00e7\u0131l\u0131p a\u00e7\u0131lmad\u0131\u011f\u0131 bilgisini tutuyorduk burda **if self.isloggedin** diyerek oturum a\u00e7m\u0131\u015f ise request iste\u011fini bizim \u00e7erez ve session vb bilgilerin bulundu\u011fu **self.s** ile yapaca\u011f\u0131z bu sayede e\u011fer oturum a\u00e7m\u0131\u015f ve i\u015flem yapaca\u011f\u0131m kullan\u0131c\u0131 bizde ekli ise daha detayl\u0131 bilgilere eri\u015febilece\u011fiz,e\u011fer oturum a\u00e7\u0131lmam\u0131s ise zaten normal **requests.get** yap\u0131p herkese a\u00e7\u0131k olan kullan\u0131c\u0131 bilgilerine eri\u015febiliyoruz.\r\n\r\n### Follow()\r\n\r\nkodlarda a\u00e7\u0131klamalar var\r\n\r\n```python\r\n def follow(self,username = False, userid = None):\r\n if self.isloggedin:\r\n if userid is not None: # e\u011fer ki\u015fi userid ye g\u00f6re takip atacaksa user_id None olmaz \r\n follow_url = self.follow_url.format(userid) # ve gelen user_id yi adrese atar\u0131z ( follow_url bu adrese) \r\n elif userid is None and username: # userid e\u011fer None ise username de True ise yani girilmi\u015f ise\r\n userid = self.userinfo(username)[\"user\"][\"id\"] # bir yukar\u0131da tan\u0131mlad\u0131\u011f\u0131m\u0131z \r\n #userinfo fonksiyonuna bize sadece id numaras\u0131 laz\u0131m o\r\n # y\u00fczden @static olarak tan\u0131mlad\u0131\u011f\u0131m\u0131zdan veri al\u0131yoruz\r\n follow_url = self.follow_url.format(userid) # follow_url olu\u015fturduk id numars\u0131n\u0131 alarak\r\n else:\r\n return \"you can not enter two parameters at the same time\"\r\n self.s.headers.update({'X-CSRFToken': self.s_get.cookies.get_dict()['csrftoken']})\r\n r = self.s.post(follow_url) # ve post iste\u011fi ile takp iste\u011fini g\u00f6ndermi\u015f oluyoruz\r\n return self.json_loads(r)\r\n else:\r\n print(\"You must login first\")\r\n```\r\n\r\n\u015fimdi bu bir ki\u015fiyi kullan\u0131c\u0131 ad\u0131na veya user_id sine g\u00f6re takip iste\u011fi atmam\u0131z\u0131 sa\u011flayan bir fonksiyondur.\r\nald\u0131\u011f\u0131 parametreler:\r\n- username\r\n- userid\r\nher ikisini ayn\u0131 anda alamaz al\u0131rsa **else: return \"you can not enter two parameters at the same time\"** bu \u00e7al\u0131\u015f\u0131r yani alman\u0131za izin vermez di\u011fer a\u00e7\u0131klamlar\u0131 kodlar\u0131n i\u00e7ine yazd\u0131m.userinfo dan daha ne gibi bilgiler al\u0131nabilir diye merak ediyorsan\u0131z github da verdi\u011fim adreste **userinfo.md** dosyas\u0131na bak\u0131n.\r\n\r\n### Unfollow()\r\n\r\nArkada\u015flar unfollow da follow un ayn\u0131s\u0131 sadece adresi de\u011fi\u015fiyor init de tanmlam\u0131\u015f oldugumuz unfollow oluyor onun yerine\r\n\r\n### Singup()\r\n\r\nLogin fonksiyonuna \u00e7ok benzer kendileri\r\n\r\n```python\r\n def signup(self, first_name, email):\r\n form_data={\r\n \"email\": email,\r\n \"password\": self.password,\r\n \"username\": self.username,\r\n \"firs_name\": full_name,\r\n \"seamless_login_enabled\": \"1\"\r\n }\r\n self.s.headers.update({\r\n 'UserAgent': self.useragent,\r\n \t\t'x-instagram-ajax': '1',\r\n \t\t'X-Requested-With': 'XMLHttpRequest',\r\n \t\t'Host': self.instagram_url,\r\n \t\t'ContentType': 'application/x-www-form-urlencoded',\r\n \t\t'Connection': 'keep-alive',\r\n \t\t'Accept': '*/*',\r\n \t\t'Referer': self.instagram_url,\r\n \t\t'authority': 'www.instagram.com',\r\n \t\t'Host' : 'www.instagram.com',\r\n \t\t'Accept-Language': 'en-US;q=0.6,en;q=0.4',\r\n \t\t'Accept-Encoding': 'gzip, deflate'\r\n \t})\r\n self.s.headers.update({'X-CSRFToken': self.s_get.cookies.get_dict()['csrftoken']})\r\n r = self.s.post(self.instagram_signup_url, data=form_data)\r\n return self.json_loads(r)\r\n```\r\n\r\n**form_data** m\u0131zda sizinde bilmi\u015f oldu\u011funuz gibi instagra.com'a \u00fcye olurken sordu\u011fu 4 soru var email,\u015fifre,kullan\u0131c\u0131 ad\u0131 ve tam ad\u0131n\u0131z\r\n\r\nbu form isimlerinide frefoxda params sekmesinde bulunuyor ilgili adrese bakt\u0131g\u0131n\u0131zda, rastgele formu doldurup giden isteklerden https://www.instagram.com/accounts/web_create_ajax/ bu adrese bakt\u0131g\u0131n\u0131zda params sekmesinde form isimleri g\u00f6r\u00fcn\u00fcr.\r\n\r\n- \"email\"\r\n- \"password\"\r\n- \"username\"\r\n- \"firs_name\"\r\n- \"seamless_login_enabled\": \"1\"\r\n\r\n\r\n##### Resimde g\u00f6r\u00fcn\u00fcyor :\r\n\r\n![instagram](https://www.coogger.com/media/images/instagram.jpg)\r\n\r\nBunlar yani geri kalan i\u015flemde yine ayn\u0131 i\u015flemler login de oldu\u011fu gibi.\r\n\r\nGer\u00e7ekten bu botu anlat\u0131rken \u00e7ok yoruldum umar\u0131m faydal\u0131 ve yard\u0131mc\u0131 olur siz de\u011ferli okuyanlara github adresini b\u0131rakt\u0131m zaten herkese iyi \u00e7al\u0131\u015fmalar g\u00f6r\u00fc\u015fmek \u00fczere\r\n\r\n## Botun kullan\u0131m\u0131 :\r\n\r\n```python\r\nfrom instagram import Instagram as I\r\n# diyerek import ettik\r\nuser_info = I.userinfo(username = \"hakancelik.py\") veya\r\nuser_info = I.userinfo(\"hakancelik.py\")\r\n# oturum a\u00e7madan belirlerdi\u011fimiz bir kullan\u0131c\u0131n\u0131n herkese a\u00e7\u0131k \r\n# bilgilerine eri\u015fmek i\u00e7in userinfo fonksiyonunu kullan\u0131yoruz 1 parametre al\u0131r ve bu da bilgi edinece\u011fimiz ki\u015finin kullan\u0131c\u0131 ismidir.\r\nuser_info[\"logging_page_id\"]\r\n# userinfo foksiyonu bize json format\u0131nda bir veri d\u00f6nd\u00fcr\u00fcr bunun i\u00e7inde hangi bilgiler var derseniz \u015fu dosyay\u0131 # incelemiz gerek:[userinfo.md](https://github.com/hakancelik96/instagram/blob/e9d1919b2f0cd3e299b997d6fe7314f9dfdfd73c/userinfo.md)\r\n# mesela bu kullan\u0131c\u0131n\u0131n id numaras\u0131n\u0131 alaca\u011f\u0131z diyelim bunun i\u00e7in \r\nuser_info[\"user\"][\"id\"] \r\n# dememiz gerekiyor peki id numaras\u0131 ne i\u015fe yarar derseniz ki\u015filere \r\n# takip iste\u011fi gibi # olaylar\u0131 id numars\u0131na g\u00f6re yap\u0131yoruz\r\n# ki\u015finin tam ismi i\u00e7in\r\nuser_info[\"user\"][\"full_name\"]\r\n# e\u011fer bilgi edinmek istedi\u011finiz ki\u015fi sizi engellemi\u015f mi bunu \r\n# \u00f6\u011frenmek i\u00e7in oturum a\u00e7mal\u0131 ve daha sonra ilgili bilgiyi kontrol etmelisiniz \u00f6rne\u011fin:\r\nI = I(\"hakancelik.py\", \"password\") kullan\u0131c\u0131 ad\u0131m\u0131 ve \u015fifremi yazd\u0131m ard\u0131ndan oturum a\u00e7mak i\u00e7in\r\nI.login() login() fonksiyonunu \u00e7a\u011f\u0131rd\u0131\u011f\u0131mda oturum a\u00e7m\u0131\u015f oluyorum\r\nI.userinfo(\"hakancelik.py\")[\"user\"][\"blocked_by_viewer\"] false d\u00f6nerse siz engellememissiniz demektir.\r\n# Birine takip iste\u011fi atmak i\u00e7in\r\nI.follow(username=\"hakancelik.py\")# derseniz bana takip iste\u011fi g\u00f6nderecektir.\r\n# takibi b\u0131rakmak i\u00e7in\r\nI.follow(username=\"hakancelik.py\") # derseniz e\u011fer beni takip ediyorsan\u0131z takibi b\u0131rakacakt\u0131r.\r\n# user_id numars\u0131na g\u00f6re takip iste\u011fi atmak i\u00e7in\r\nI.follow(userid = 3) # yaparsan\u0131z kevin ad\u0131nda birini takip etmi\u015f olursunuz\r\n# oturumdan \u00e7\u0131kmak i\u00e7in :\r\nI.logout()\r\n# oturum a\u00e7man\u0131z veya \u00e7\u0131k\u0131\u015f yap\u0131p yapmad\u0131\u011f\u0131n\u0131z g\u00f6rmek i\u00e7in\r\n# I.isloggedin # true ise giri\u015f yapm\u0131ss\u0131n\u0131z false ise c\u0131k\u0131s yapm\u0131ss\u0131n\u0131zd\u0131r.\r\n# yeni bir kullan\u0131c\u0131 a\u00e7mak i\u00e7in login yapmadan \u00f6nce\r\nI.signup(first_name=\"first_name\",email=\"email\") #bunu \u00e7al\u0131\u015ft\u0131r\u0131 ve gerkli yerleri doldurusan\u0131z size yeni bir hesap acacakt\u0131r.\r\n```\r\n\r\n```python\r\nfrom instagram import Instagram as I\r\nuser_info = I.userinfo(\"hakancelik.py\") # get information before signing in\r\noturum a\u00e7madan bilgi al\u0131yoruz\r\n user_info[\"logging_page_id\"] # page_id\r\nuser_info[\"user\"][\"id\"] # for user id\r\n user_info[\"user\"][\"full_name\"] # for full name\r\n# etc ... for more information read userinfo.md\r\nI = I(\"username\", \"password\") \r\n# if you want to use proxy I(\"username\", \"password\", True)\r\nI.username\r\nusername\r\nI.password\r\npassword\r\nI.useragent\r\n# gives random useragent\r\nI.s\r\n# gives requests session\r\nI.s.proxies\r\n# you gives fake proxy ex: 165.321.51.21:8050\r\nI.login() # to login instagram\r\nI.logout() # to logout instagram\r\nI.isloggedin # To check whether loggedin or not\r\nFalse # or True\r\nI.follow(userid = 3) # for @kevin\r\n{'result': 'following', 'status': 'ok'}\r\nI.follow(username = \"hakancelik.py\") # for me\r\n{'result': 'following', 'status': 'ok'}\r\nI.unfollow(userid = 3) # for #kevin\r\n{'status': 'ok'}\r\nI.unfollow(\"hakancelik.py\") # for me\r\n{'status': 'ok'}\r\nI.signup(first_name=\"first_name\",email=\"email\") # to signup for instagram\r\n```\r\n\r\n<div gnrl=\"center br-2 b-1\" color=\"bg-dark c-white\">Bu kadar g\u00f6r\u00fc\u015fmek \u00fczere, okudu\u011funuz i\u00e7in te\u015fekk\u00fcrler.</div>"}}"
extensions[]
signatures
0.205156a3c35ab76b642cdef4ab1027556dc08b77900acb40ab572c31f155452ec50997d02d3f2bc2b3421d321f16b723b8853b6f242759b886497ec62dd3b37ecf
transaction_idb37fbcef84bb312dec07c537ec78fcae898f25e2
block_num33,060,091
transaction_num9