Modul Requests – HTTP – Proxy

By | November 1, 2022
Print Friendly, PDF & Email
5,947 Views

Modul Requests digunakan untuk mengirimkan permintaan HTTP menggunakan Python. Request HTTP mengembalikan Objek Respons dengan semua data respons (konten, penyandian, status, dll). Modul Request dapat juga digunakan untuk mengambil halaman sebuah website seperti untuk scrapping isi website.

Bahkan kita juga bisa melakukan login website menggunakan modul tersebut. Modul ini menjadi dasar untuk semua package diatas nya seperti package mechanize, scrappingbee, dan yang lainnya. Atau bahkan digunakan untuk brute force sebuah website nya namun harus dilengkapi dengan proxy agar ada fitur IP rotate.

Perintah requests secara umum yaitu bisa dilihat sebagai berikut

import requests as req

resp = req.get("http://www.kompas.com")

print(resp.text)

HTTP request

Request HTTP akan mengirimkan pesan kepada klien menggunakan browser dengan beragam perintah seperti get, post, dan put.

import requests as req

resp = req.request(method='GET', url="https://kompas.com")
print(resp.text)

Beberapa jenis Requests

Beberapa jenis requests yang bisa kita gunakan yaitu

  • response = requests.get(url)
  • response = requests.post(url, data={"a": 1, "b": 2})
  • response = requests.put(url, data=put_body)
  • response = requests.delete(url)
  • response = requests.patch(url, data=patch_update)
  • response = requests.head(url)
  • response = requests.options(url)

Syntax umum diatas mempunyai beberapa argument input yang bisa kita atur seperti

requests.get(url, params={key: value}, args)

  • url : Required. The url of the request
  • params : Optional. A dictionary, list of tuples or bytes to send as a query string. Default None
  • allow_redirects : Optional. A Boolean to enable/disable redirection. Default True (allowing redirects)
  • auth : Optional. A tuple to enable a certain HTTP authentication. Default None
  • cert : Optional. A String or Tuple specifying a cert file or key. Default None
  • cookies : Optional. A dictionary of cookies to send to the specified url. Default None
  • headers: Optional. A dictionary of HTTP headers to send to the specified url. Default None
  • proxies : Optional. A dictionary of the protocol to the proxy url. Default None
  • stream : Optional. A Boolean indication if the response should be immediately downloaded (False) or streamed (True). Default False
  • timeout : Optional. A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response. Default None which means the request will continue until the connection is closed
  • verify : Optional. A Boolean or a String indication to verify the servers TLS certificate or not.
    Default True
See also  JupyterLab 3.0 Dirilis: Yuk lihat Semua Fitur & Pembaruan Utama

Download File

Yuk kita coba download file menggunakan param stream=true

import requests as req

download = req.get(url="https://softscients.com/wp-content/uploads/2022/10/browser-tor-2-1024x667.png",
        stream=True,
        allow_redirects=True)

open('gambar.png', 'wb').write(download.content)

Menggunakan Cookies dan Session

Kita juga bisa menggunakan cookies dan session yang login disebuah website dan kemudian digunakan untuk keperluan scrapping

import requests

kuki = {'PHPSESSID':'xxxxxxxx',
        'reg_token':'xxxxxxxxxxxxxxx',
        'token':'xxxxx'}

post = {'user':"xxxxxx",
        'nama':"Bahtiar Arbi"}

r = requests.post('https://situs.com/post.php', cookies=kuki,data = post)

data = r.json()
print(data)

Login ke Situs

Untuk login ke situs, kita harus membuat session yang akan menyimpan cookies nya

import requests
wp_login = 'https://softscients.com/wp-login.php'
wp_admin = 'https://softscients.com/wp-admin.php'

username = 'xxxx'
password = 'xxxxxx'
#buat payload
payload = {'log':username, 'pwd':password}
#buat session
session = requests.Session()
#login
session.post(wp_login, data=payload)
#kemudian akses ke panel
resp = session.get(wp_admin)
print(resp.text)

Kalian bisa melihat isi session dengan cara session.cookies. Biar lebih jelasnya ketikan saja kode berikut

for c in session.cookies:
    print(c.name +"==>>", c.value)

Setelah login, nanti bisa dilanjutkan dengan scrapping website

Proxy

Proxy dapat juga digunakan untuk mengubah alamat IP kita sehingga terhindar dari pelacakan. Untuk meyakinkan sebuah server bahwa komputer yang digunakan adalah sebuah browser, kita dapat menyisipkan header sebagai berikut. Oiya alamat untuk cek IP yaitu https://api.ipify.org

import requests 
session = requests.Session()
headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en-US,en;q=0.9',
    'cache-control': 'max-age=0',
    'referer': 'https://www.whatismyip.com/52.242.97.97/',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
}
st = session.get("https://api.ipify.org",headers = headers)
print(st.text)

IP addres asli diatas yaitu 140.213.167.243

Sekarang kita akan gunakan proxy yang ada di http://free-proxy.cz/en/proxylist/country/ID/all/ping/all

Misalkan alamat proxy nya yaitu

  • 117.54.114.33
  • port 80
  • jenis HTTP
  • lokasi Indonesia
import requests 
session = requests.Session()
headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en-US,en;q=0.9',
    'cache-control': 'max-age=0',
    'referer': 'https://www.whatismyip.com/52.242.97.97/',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
}
session.proxies = {
   'http': '117.54.114.33:80'
}

st = session.get("https://api.ipify.org",headers = headers)
print(st.text)

IP setelah diubah menjadi 140.213.175.204

Biasanya Proxy digunakan untuk melakukan banyak hal seperti scrapping website agar terhindar dari block IP

See also  Cara melakukan List File Extension

Rotate IP

Yup IP rotate yaitu  merotasikan IP agar seolah-olah melalukan requests dari beragam IP yang berbeda. Biasanya hal ini digunakan untuk block IP. Caranya sih sangat mudah, kita bisa membuat list proxy kemudian secara acak memilihnya

import requests
import random
import time

ip_addresses = [    "50.218.57.65:80",
                    "183.27.249.31:8085"
                    "50.218.57.68:80",
                    "128.201.232.102:888",
                    "50.218.57.59:80",
                    "50.204.219.230:80",
                    "50.218.57.71:80"
]


headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en-US,en;q=0.9',
    'cache-control': 'max-age=0',
    'referer': 'https://www.whatismyip.com/52.242.97.97/',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
}

for i in range(0,10):
    proxy = random.randint(0, len(ip_addresses) - 1)
    session = requests.Session()
    time.sleep(1)
    #print(proxy)
    session.proxies = {
       'http': ip_addresses[proxy]
    }
    st = session.get("https://api.ipify.org",headers = headers)
    print(st.text)

    

Lebih lanjut mengenai proxy

Proxy server memiliki fungsi sebagai perantara untuk klien dan server. Sebelumnya, perlu ketahui ketika melakukan akses ke internet maka akan terhubung ke web server melalui IP address perangkat yang digunakan. Tetapi, apabila menggunakan proxy server maka akan dihubungkan terlebih dahulu ke proxy server untuk selanjutnya diteruskan ke webserver.  Sehingga IP address yang digunakan pun bukan IP address perangkat tersebut, melainkan IP address dari proxy server tersebut.

Untuk cara kerjanya, karena layanan ini memiliki IP address sendiri maka ia berperan layaknya perantara untuk perangkat dan internet. Permintaan (request) yang dikirimkan ke internet akan langsung dialihkan atau di rutekan ke proxy. Kemudian akan mendapatkan jawaban berupa data (website, foto, video, dsb.) dari web server, dan data-data tersebut akan diteruskan untuk ditampilkan melalui halaman browser.

Tipe-Tipe Proxy Server

Terdapat beberapa jenis proxy dengan cara kerja yang berbeda. Berikut Jenis-jenis proxy yang bisa digunakan.

  1. Transparent Proxy: Jenis ini akan memberitahu website bahwa koneksi yang digunakan merupakan proxy server, dan tetap meneruskan informasi mengenai IP address ke web server.
  1. Anonymous Proxy: Hampir sama dengan yang sebelumnya, jenis yang satu ini juga akan mengidentifikasi dirinya sebagai proxy server. Namun yang membedakan adalah proxy ini tidak akan meneruskan IP address, sehingga identitas pengguna dapat terlindungi saat melakukan akses ke internet.
  1. Distorting Proxy: Jenis ini akan tetap mengidentifikasi dirinya sebagai proxy server, tetapi akan meneruskan IP address palsu atau berbeda dari yang digunakan. Bisa muncul dengan IP dari negara lain, sehingga dapat mengakses beberapa konten yang terkena geo-restriction.
  1. High Anonymity Proxy: Jenis yang terakhir ini akan mengubah IP address– secara berkala, sehingga sulit untuk dilakukan pelacakan. Ini merupakan salah satu jenis proxy server yang paling aman untuk digunakan dalam mengakses internet.
See also  OMP - Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

ref:

https://zetcode.com/python/requests/

https://www.scrapingbee.com/blog/python-requests-proxy/