Turkhackteam.net/org - Turkish Hacking & Security Platform...  
Geri git   Turkhackteam.net/org - Turkish Hacking & Security Platform... >
Programlama
> Python

Python Requests modülü kullanımı

Python

Yeni Konu aç Cevapla
 
Seçenekler
Alt 16-01-2017   #1
  • Offline
  • Ar-Ge Tim(Bug Researcher)
  • Genel Bilgiler
Üyelik tarihi
Oct 2015
Nereden
rm -rf /
Mesajlar
Konular


  
Python Requests modülü kullanımı



Python Requests Modülü:
Öncelikle merhaba, uzunca bir süre aranızda olamayacağım ve giderken en azından bir konu bırakmak istedim. Python'da requests modülünü anlatacağım..
Nedir:
Requests modülü ,sloganında da olduğu gibi -Http for Humans-, "urllib3" tabanlı organik HTTP paketleri göndermenize yarayan modüldür.
Yükleme:
Requests modülü en kolay şekilde "pip install requests" şeklinde yüklenebilir.

Yapılabilecekler:
-> Brute Force atak scripti yazabilirsiniz.
-> HTTP istekleri gönderebilirsiniz.
-> Bir sitenin unicode dönüşüm biçimini görebilirsiniz.
Ve daha niceleri...

Kullanım örnekleri
Kod:
>>> import requests #modülümüzü içe aktaralım
>>> r = requests.get('https://github.com/login', auth=('Hacknology', ŞİFRE)) #github'a bağlanalım. Herhangi bir site olabilir bu
>>> r.status_code #Başarılı olmuş mu diye bakalım
200
Gördüğümüz gibi HTTP 200 döndürdü. Nedir bu 200?:

200 OK Tamam
201 Created Oluşturuldu
202 Accepted Onaylandı
203 Non-Authoritative Information Yetersiz Bilgi
204 No Content İçerik Yok
205 Reset Content İçeriği Baştan al
206 Partial Content Kısmi İçerik
207 Multi-Status WebDAV :Çok-Statü
210 Content Different WebDAV :Farklı İçerik


Tabii hepimiz en çok '404'ü biliriz :P "Sayfa bulunamadı". 200'de başarılı olduğunu gösterir. Şimdi unicode biçimine bakalım isterseniz:
Kod:
>>> r.encoding
'utf-8'
Gördüğümüz gibi utf-8 miş. Sitenin görüntülenen sayfasındaki içerik kodlarına da ulaşabiliriz (Chrome da ctrl+u şeklinde eriştiğimiz)
Kod:
>>> r.text
GET METODUNDA PARAMETRELER:
Üstte get metodundan küçük bir örnek vermiştik. Site url'sindeki parametreleri kullanarak sitedeki dosyalar değişkene atanabilir.
Misalen..
"http://www.sallatykka.com/web/index.php?id=31"
Bu örnek sitemiz olsun. (SQL açığı var bu arada. Anka belki ilgilenir)
burda 'id' değerinden sonra gelen '31' parametresi ayarlanabilir.

Kod:
import requests
r = requests.get("http://www.sallatykka.com/web/index.php",
                 params = {'id':31})
print(r.url)
Bize tam url'yi verecek, pekii bu ne işimize yarayacak?

-->Eğer biz burdaki id değerini sürekli 1 arttırıp base değerinden farklı bir sayı döndürenleri (bkz:HTTP durum kodlar) ayırırsak bir "web crawler" yapabiliriz.
Örnekle anlatayım:

1- Request modülünü içe aktaralım
2- Kullanıcıdan bir id değeri isteyelim
3- id değerini url üzerinde yerine koyalım
4- 200 döndürüyorsa bir listeye yazalım.
Kod:
import requests
id_deger = int(input('[*]Bir id değeri girin: '))
r = requests.get("http://www.sallatykka.com/web/index.php",
                 params = {'id':id_deger})
if r.status_code == 200:
    print('Bulundu!')
    print(r.url)
Kod:
[*]Bir id değeri girin: 32
Bulundu!
http://www.sallatykka.com/web/index.php?id=32
>>>


JSON:
Öncelikle... Json nedir?
Google'a göre JSON:
"JSON, programlama dilinden bağımsız olan Xml'e alternatif olarak kullanılan javascript tabanlı veri değişim formatıdır. JSON'un amacı veri alış verişi yaparken daha küçük boyutlarda veri alıp göndermektir.Bu özellikleri sayesinde JSON ile çok hızlı web uygulamaları oluşturabilir."
Örneğin:

Kod:
{
   "tur":"met.l",
   "grup":"System of a Down"
}
Peki biz bu jsondan nasıl faydalanırız?
requests modülünün .json() özelliği tam da bunun için. Yukarıda GET parametresinden bahsetmiştik. Burda küçük bir kod parçacığı ile json'u decode edebiliyoruz
Örnek:

Kod:
>>> import requests
r = requests.get('https://api.github.com/events')
>>> r.json()
[{'type': 'CreateEvent', 'id': '5226537554', 'actor': {'id': 12762300, 'gravatar_id': '', ...
diye başlayıp uzuuunca devam eden bir metin döndürdü gördüğünüz gibi.
Ayrıca, json kütüphanesi ile de beraber kullanılabilir.

Kod:
>>> import json
>>> import requests
>>> url = "https://api.github.com/some/endpoint"
>>> hckn0 = {'some': 'data'}
>>> r.requests.post(url, data=json.dumps(hckn0))
>>> r = requests.post(url, data=json.dumps(hckn0))
>>> print(r.text)
{"message":"Not Found","docu_mentation_url":"https://developer.github.com/v3"}
Üstteki kod parçacığında bahsetmediğimiz tek şey POST methodu, hemen geçelim
POST:
Post istekleri genellikle url'de görünmesini istemediğimiz zamanlarda kullanılır. Misal "get" metodunda yazdığımız veriler adres çubugunda gösterilirdi fakat POST'da gösterilmez.
Yani misalen web geçmişinde, önceki bir sitenin adres çubuğunda bilgilerimizin görünmesini engeller.

Python'da kullanımı:
Kod:
>>> payl = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://httpbin.org/post", data=payl)
>>> print(r.text)
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "key1": "value1", 
    "key2": "value2"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Content-Length": "23", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.13.0"
  }, 
  "json": null, 
  "origin": "62.248.25.231", 
  "url": "http://httpbin.org/post"
}
Peki aynısını GET ile yapsaydık ne olacaktı?
Kod:
>>> r = requests.get("http://httpbin.org/post", data=payl)
>>> print(r.text)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method is not allowed for the requested URL.</p>
Farkı gördünüz değil mi? işte POST metodu tam da burada yardımıza koşuyor.
Dönüt başlıkları:
Az önceki "'tur':'met.l'" örneğim aklımıza gelsin. Diyelimki onlarca başlık var ve biz birisini seçmeliyiz. Nasıl yapardık?
".headers" denilen yapı bu günler için aranan kan. Kullanımı get ve post'a oldukça benzer de olsa küçük farklılıklar mevcut. Nasıl efendim?

Kod:
r = requests.post("http://httpbin.org/post", data=payl)
>>> r.headers['Content-Type']
'application/json'
>>>
tabii ki, -çoğu zaman olduğu gibi- burda da farklı yöntemler mevcut.
Kod:
>>> r.headers.get('content-type')
'application/json'

SESSION:
HTTP üzerinden bağlantılar yaparken bazen "cookie" kullanmamız gerekir. Bu gibi durumlarda "session" kullanırız. Ayrıca aynı host'a birden fazla istek gönderecekseniz, TCP tekrarlandığında, önemli bir performans artışı sağlar. (Örnek: Brute Force)
Basitçe;
Kod:
>>> import requests
>>> s = requests.Session()
>>> s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
<Response [200]>
>>> r = s.get('http://httpbin.org/cookies')
>>> print(r.text)
{
  "cookies": {
    "sessioncookie": "123456789"
  }
}

>>>
Bu şekilde kullanılır, ayrıca kendi yazdığım wordpress brute force tool'da da kullanımını görebilirsiniz.
Kod:
r = session.post(site, data={"log":"admin","pwd":sifre},timeout=5)
Bu günlük bu kadar, kendinize çok iyi bakın. Diğer yazımızda görüşmek üzere
    


__________________

I surrender my soul
Odin hear my call

hacknology@hacknologyroot:~/


Konu Hacknology tarafından (29-01-2017 Saat 20:02 ) değiştirilmiştir..
Offline
 
Alıntı ile Cevapla
Alt 16-01-2017   #2
  • Offline
  • Forumdan Uzaklaştırıldı
  • Genel Bilgiler
Üyelik tarihi
Jan 2017
Nereden
-
Mesajlar
Konular
1


  


Ellerine sağlık
    
Offline
 
Alıntı ile Cevapla
Alt 16-01-2017   #3
  • Offline
  • Asteğmen
  • Genel Bilgiler
Üyelik tarihi
Jan 2017
Mesajlar
Konular
6


  


Ellerine sağlık, kısa ve öz..
    


__________________

THT Candır Gerisi Heijan..!
Offline
 
Alıntı ile Cevapla
Alt 23-01-2017   #4
  • Offline
  • Teğmen
  • Genel Bilgiler
Üyelik tarihi
Apr 2016
Nereden
c:/
Mesajlar
Konular


  


pythonun kendi sitesinden requests i indirdim iki tane vardı ikisinide indirdim birinde setup.py vardı açtım hata veriyo 2. si .whl diye geldi onuda yapamadım cmdye pip install requests yazınca pip komutunu tanımıyo lütfen yardım edin bu modükle çok ihtiyacım var
    


__________________

%20 c++
%80 web hack
%90 python
%100 TÜRK

Defacer Name: InFlames

Offline
 
Alıntı ile Cevapla
Alt 23-01-2017   #5
  • Offline
  • Teğmen
  • Genel Bilgiler
Üyelik tarihi
Apr 2016
Nereden
c:/
Mesajlar
Konular


  
Smile



Alıntı:
Ayberk25´isimli üyeden Alıntı Mesajı göster
pythonun kendi sitesinden requests i indirdim iki tane vardı ikisinide indirdim birinde setup.py vardı açtım hata veriyo 2. si .whl diye geldi onuda yapamadım cmdye pip install requests yazınca pip komutunu tanımıyo lütfen yardım edin bu modükle çok ihtiyacım var
tamam buldum çözümü cmd ye python setup.py install yazınca indi konu güzel sağolun ellerinize sağlık
    


__________________

%20 c++
%80 web hack
%90 python
%100 TÜRK

Defacer Name: InFlames

Offline
 
Alıntı ile Cevapla
Alt 23-01-2017   #6
  • Offline
  • Ar-Ge Tim(Bug Researcher)
  • Genel Bilgiler
Üyelik tarihi
Oct 2015
Nereden
rm -rf /
Mesajlar
Konular


  


Alıntı:
Ayberk25´isimli üyeden Alıntı Mesajı göster
pythonun kendi sitesinden requests i indirdim iki tane vardı ikisinide indirdim birinde setup.py vardı açtım hata veriyo 2. si .whl diye geldi onuda yapamadım cmdye pip install requests yazınca pip komutunu tanımıyo lütfen yardım edin bu modükle çok ihtiyacım var
Hatayı atar mısınız? Python3 kullanıyorsanız
py -3 -m pip instal requests deyin
Edit:çözülmüş
    


__________________

I surrender my soul
Odin hear my call

hacknology@hacknologyroot:~/

Offline
 
Alıntı ile Cevapla
Alt 29-01-2017   #7
  • Offline
  • Ar-Ge Tim(Bug Researcher)
  • Genel Bilgiler
Üyelik tarihi
Oct 2015
Nereden
rm -rf /
Mesajlar
Konular


  


//Konu sabitlenmiş. Herkesin görmesi adına güncel
    


__________________

I surrender my soul
Odin hear my call

hacknology@hacknologyroot:~/

Offline
 
Alıntı ile Cevapla
Alt 29-01-2017   #8
  • Offline
  • Tamamen Forumdan Uzaklaştırıldı
  • Genel Bilgiler
Üyelik tarihi
Feb 2016
Mesajlar
Konular


  


Ellerine emeğine sağlık yılancı
    
Offline
 
Alıntı ile Cevapla
Alt 29-01-2017   #9
  • Offline
  • Yüzbaşı
  • Genel Bilgiler
Üyelik tarihi
Aug 2015
Mesajlar
Konular


  


Elinize sağlık.
    


__________________

AÇ GÖZÜNÜ ATATÜRK DEĞİL ! Türkiye Cumhuriyeti'nin kurucusu, Anafartalar komutanı,

Gazi Mareşal Başbuğ Mustafa Kemal Atatürk diyeceksin.

Offline
 
Alıntı ile Cevapla
Alt 29-01-2017   #10
  • Offline
  • Ar-Ge Tim(Bug Researcher)
  • Genel Bilgiler
Üyelik tarihi
Oct 2015
Nereden
rm -rf /
Mesajlar
Konular


  


Teşekkürler
    


__________________

I surrender my soul
Odin hear my call

hacknology@hacknologyroot:~/

Offline
 
Alıntı ile Cevapla
Cevapla

Bookmarks

Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks Kapalı
Pingbacks Kapalı
Refbacks Kapalı


Bilgilendirme Turkhackteam.net/org
Sitemizde yer alan konular üyelerimiz tarafından açılmaktadır.
Bu konular yönetimimiz tarafından takip edilsede gözden kaçabilen telif hakkı olan veya mahkeme kararı çıkmış konular sitemizde bulunabilir. Bu tür konuları bize turkhackteamiletisim [at] gmail.com adresine mail atarak bildirdiğiniz takdirde en kısa sürede konular hakkında gerekli işlemler yapılacaktır.
Please Report Abuse, DMCA, Harassment, Scamming, Warez, Crack, Divx, Mp3 or any Illegal Activity to turkhackteamiletisim [at] gmail.com


Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz, bu sitelerin güvenlik açıklarını site sahibine bildirmek için çaba sarfeder.
Turkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Turkhackteam sorumlu değildir. Sitelerinize Turkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.



         

Powered by vBulletin® Copyright ©2000 - 2017

TSK Mehmetçik Vakfı

Türk Polis Teşkilatını Güçlendirme Vakfı



Google Links
instagram Takipçi Hilesi

wau

Search Engine Friendly URLs by vBSEO 3.6.0 ©2011, Crawlability, Inc.