Cara menggunakan python requests path traversal

Requests adalah modul Python yang bisa kamu gunakan untuk mengirim berbagai request HTTP. Requests adalah library yang mudah digunakan dengan banyak fitur mulai dari melempar parameter dalam URL sampai mengirim header khusus dan verifikasi SSL. Dalam tutorial ini, kamu akan belajar bagaimana menggunakan library ini untuk mengirim request HTTP sederhana dalam Python.

Kamu bisa menggunakan Requests dengan Python versi 2.6-2.7 dan 3.3-3.6. Sebelum melanjutkan lebih jauh, kamu perlu tahu bahwa Requests adalah modul eksternal, jadi kamu harus menginstallnya terlebih dahulu sebelum mencoba contoh pada tutorial ini. Kamu bisa menginstallnya dengan menjalankan perintah berikut di terminal:

1
pip install requests

Setelah kamu menginstal modul tersebut, kamu bisa memastikan instalasi sukses dengan mengimportnya dengan menggunakan perintah ini:

1
import requests

Jika instalasi berhasil, kamu tidak akan melihat pesan error apapun.

Membuat Request GET

Mengirim request HTTP menggunakan Requests sangat mudah. Kamu mulai dengan mengimpor modul dan membuat request. Berikut ini adalah contohnya:

1
import requests
2
req = requests.get('https://tutsplus.com/')

Semua informasi tentang request kita sekarang disimpan dalam objek Resonse yang bernama

pip install requests
68. Contohnya, kamu bisa mendapat encoding dari halaman web menggunakan proprti
pip install requests
69. Kamu juga bisa mendapatkan kode status dari request menggunakan properti
pip install requests
70.

1
req.encoding     # returns 'utf-8'

2
pip install requests
1

Kamu bisa mengakses cookie yang dikirim balik oleh server menggunakan

pip install requests
71. Begitu pula, kamu bisa mendapat header respon menggunakan
pip install requests
72. Properti
pip install requests
72 mengembalikan kamus case incensitive dari respon header. Ini berarti
pip install requests
74,
pip install requests
75 dan
pip install requests
76 semuanya akan mengembalikan nilai dari
pip install requests
77 response header.

Kamu bisa memeriksa apakah respon berupa HTTP redirect yang bisa saja sudah diproses secara otomatis menggunakan properti

pip install requests
78. Properti itu akan mengembalikan
pip install requests
79 atau
pip install requests
80 berdasarkan respon tersebut. Kamu juga bisa mendapat waktu yang sudah berjalan antara mengirim request dan mendapatkan respon menggunakan properti
pip install requests
81.

URL yang kamu kirim ke fungsi

pip install requests
82 mungkin berbeda dengan URL akhir dari respon karena berbagai alasan, termasuk redirect. Untuk melihat URL respon terakhir, kamu bisa menggunakan properti
pip install requests
83.

1
import requests
2
pip install requests
5
pip install requests
6
pip install requests
7
pip install requests
8
pip install requests
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
import requests
0
import requests
1
import requests
2
import requests
3
import requests
4

Mendapatkan semua informasi tentang webpage yang kamu akses memang bagus, tapi kemungkinan besar kamu ingin mengakses konten sebenarnya. Jika konten yang kamu akses berupa teks, kamu bisa menggunakan properti

pip install requests
84 untuk mengaksesnya. Konten akan diurai sebagai unicode. Kamu bisa mengetahui jenis encoding untuk mendecode teks menggunakan properti
pip install requests
69.

Dalam kasus respon yang bukan teks, kamu bisa mengaksesnya dalam format binary menggunakan

pip install requests
86. Modul akan secara otomatis mendecode
pip install requests
87 dan melakukan
pip install requests
88 terhadap encoding selama transfer. Hal ini akan berguna ketika kamu berurusan dengan file media. Begitu pula kamu bisa mengakses konten json-encoded dalam respon, jika memang ada, menggunakan
pip install requests
89.

Kamu juga bisa menadapat respon mentah dari server menggunakan

pip install requests
90. Ingat bahwa kamu perlu melempar
pip install requests
91 pada request untuk mendapat respon mentah.

Sebagian file yang kamu unduh dari internet menggunakan modul Requests mungkin berukuran besar. Dalam hal itu, tidak bijak untuk membuka keseluruhan respon atau file dalam memori sekaligus. Kamu bisa mendownload file dalam potongan-potongan menggunakan fungsi

pip install requests
92.

Fungsi ini mengiterasi data respon sejumlah

pip install requests
93 byte. Jika pada request diatur
pip install requests
91, fungsi ini akan menghindari membaca keseluruhan file ke memori sekaligus untuk respon yang besar. Parameter
pip install requests
93 bisa berupa bilangan bulat atau
pip install requests
96. Jika diatur sebagai bilangan bulat,
pip install requests
93 akan menentukan jumlah byte yang akan dibaca ke memori.

Ketika

pip install requests
93 diatur sebagai
pip install requests
96 dan
1
00 diatur ke
pip install requests
79, data akan dibaca saat sampai berapapun ukuran potongan yang diterima. Saat
pip install requests
93 diatur menjadi
pip install requests
96 dan
1
00 diatur
pip install requests
80, semua data akan dikembalikan sebagai satu potongan.

Mari unduh gambar hutan di Pixabay menggunakan modul Requests. Ini adalah gambarnya:

Cara menggunakan python requests path traversal
Cara menggunakan python requests path traversal
Cara menggunakan python requests path traversal

Ini adalah kode yang kamu butuhkan:

1
import requests
2
import requests
8
pip install requests
6
1
0
pip install requests
7
1
2
pip install requests
9
1
4
1
1
1
6
1
3
1
8

1
06 adalah URL gambar sebenarnya; kamu bisa mengisinya dengan URL gambar apa saja untuk mengunduh gambar tersebut. Gambar ini berukuran 185kb, dan kamu mengatur
pip install requests
93 menjadi 50.000 byte. Ini berarti pesan "Received a Chunk" akan dicetak empat kali di terminal. Ukuran potongan terakhir akan hanya 39.350 byte karena sisa dari tiga iterasi pertama adalah 39.350 byte.

Request juga memperbolehkan kamu melempar parameter dalam URL. Ini berguna ketika kamu mencari sebuah halamanw eb untuk sebuah hasil spesifik seperti gambar atau tutorial. Kamu bisa menyediakan query string tersebut sebagai kamus dari string menggunakan kata kunci

1
08 pada request GET. Berikut adalah contohnya:

1
import requests
2
pip install requests
6
import requests
3
pip install requests
7
import requests
5
pip install requests
9
1
1
import requests
8
1
3
2
0

Membuat Request POST

membuat request POST sama mudahnya dengan membuat request GET. Kamu cukup menggunakan fungsi

1
09, bukan
pip install requests
82. Ini akan berguna ketika kamu ingin secara otomatis mengisi form. Contohnya, kode ini akan mengunduh semua halaman Wikipedia tentang Nanotechnology dan menyimpannya di PC-mu.

1
import requests
2
2
4
pip install requests
6
1
0
pip install requests
7
2
8
pip install requests
9
1
4
1
1
1
8

Seperti yang disebutkan sebelumnya, kamu bisa mengakses cookie dan header yang dikirim balik oleh server menggunakan

pip install requests
71 dan
pip install requests
72. Modul Requests juga membolehkan kamu mengirim cookie dan header khusus dalam sebuah request. Ini akan berguna ketika kamu ingin membuat agen user khusus untuk request tersebut.

Untuk menambahkan header HTTP ke sebuah request, kamu cukup melempar sebuah

1
13 ke parameter
1
14. Begitu pula kamu bisa mengirim cookie kamu sendiri ke server menggunakan
1
13 yang dilempar ke parameter
1
16.

1
import requests
2
pip install requests
6
req = requests.get('https://tutsplus.com/')
7
pip install requests
7
pip install requests
9
1
0
1
1
1
2
1
3
1
5
1
5

Cookie juga bisa dilempar dalam sebuah Cookie Jar. Hal tersebut menyediakan lebih banyak antarmuka lengkap  untuk membuat kamu menggunakan cookie via banyak jalur. Berikut adalah contohnya:

1
import requests
2
pip install requests
6
req.encoding     # returns 'utf-8'

0
pip install requests
7
req.encoding     # returns 'utf-8'

2
pip install requests
9
req.encoding     # returns 'utf-8'

4
1
1
req.encoding     # returns 'utf-8'

6
1
3
1
5
req.encoding     # returns 'utf-8'

9
1
6
pip install requests
01
1
8
import requests
0
pip install requests
04
import requests
1
import requests
3
pip install requests
07

Objek Session

Kadang penting untuk mempertahankan beberapa parameter antar beberapa request. Objek Session akan melakukan itu. Contohnya, Session akan mempertahankan data cookie antar semua request yang dibuat menggunakan session yang sama. Objek Session menggunakan connection pooling urllib3. Hal ini berarti koneksi TCP di balik layar akan digunakan ulang untuk semua request yang dibuat untuk host yang sama. Ini bisa meningkatkan performa secara signifikan. Kamu bisa juga menggunakan fungsi-fungsi objek Requests pada objek Session.

Berikut adalah contoh beberapa request yang dikirim dengan dan tanpa menggunakan sessions:

1
import requests
2
pip install requests
6
pip install requests
12
pip install requests
7
pip install requests
14
pip install requests
9
pip install requests
16
1
1
1
3
pip install requests
19
1
5
pip install requests
21
1
6
pip install requests
23
1
8
import requests
0
pip install requests
26
import requests
1
pip install requests
28
import requests
3
pip install requests
30
pip install requests
31
pip install requests
32
pip install requests
33
pip install requests
34
pip install requests
35
pip install requests
36
pip install requests
37
pip install requests
38
pip install requests
32

Seperti yang kamu bisa lihat, cookie session memiliki nilai yang berbeda pada request pertama dan kedua, tapi memiliki nilai yang sama ketika kita menggunakan objek Session. Kamu akan mendapatkan nilai yang berbeda saat mencoba kode ini, tapi dalam kasus kamu, cookie untuk request yang dibuat menggunakan objek Session akan memiliki nilai yang sama.

Session juga berguna ketika kamu ingin melempar data yang sama untuk semua request. Contohnya, kamu memutuskan untuk mengirim cookie atau header user-agent dengan semua request ke sebuah domain, kamu bisa menggunakan objek Session. Berikut adalah contohnya:

1
import requests
2
pip install requests
6
pip install requests
44
pip install requests
7
pip install requests
46
pip install requests
9
1
1
pip install requests
49
1
3
pip install requests
51
1
5
pip install requests
53
1
6
1
8
pip install requests
56
import requests
0
pip install requests
58
import requests
1
pip install requests
60
import requests
3
pip install requests
31
pip install requests
63
pip install requests
33
pip install requests
65
pip install requests
34
pip install requests
53

Seperti yang bisa kamu lihat, session cookie

1
17 dikirim pada tiga request tersebut. Tapi cookie
1
18 hanya dikirim pada request kedua. Cookie
1
18 tidak disebut di request ketiga. Ini membuktikan cookie atau data yang diatur pada sebuah request tidak akan dikirim bersama request session yang lain.

Kesimpulan

Konsep yang dibahas pada tutorial ini akan membantu kamu membuat request dasar ke sebuah server dengan mengirim header, cookie, atau query string tertentu. Ini akan sangat berguna ketika kamu ingin mengorek halaman web untuk mendapatkan informasi. Sekarang, kamu juga sudah bisa secara otomatis mengunduh file musik dan wallpaper dari berbagai situs berbeda setelah kamu tahu pola dari URL-nya.