Mengambil Harga TIKI Online Dengan PHP Curl

Ada yang tanya cara mengambil harga TIKI online dengan PHP Curl belum lama ini. Setelah saya lihat website TIKI untuk cari harga ternyata tidak sulit untuk di Curl. Proses yang saya coba ini adalah, curl halaman depan untuk mendapatkan cookie si TIKI. Simpan cookie dalam variable tertentu. Lalu setelah mendapatkan cookie, saya coba memasukan kota origin, kota destination dan berat. Lalu saya lihat di firebug menu tab NET. Terlihat parameter post dan informasi lainnya. Pendek kata ya. Berikut ini code masih mentahnya.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
// adiputra. Sabtu, 20 April 2013.
function CariKata($s, $keyword1, $keyword2) {
  $l1=strlen($keyword1);
  $x1=strpos($s, $keyword1);
  $x2=strpos($s, $keyword2, $x1+$l1);
  $l=$x2-($x1+$l1);
  return substr($s, $x1+$l1, $l);
}
if( !function_exists("curl_init") ) {
  die("curl nya blom di aktifin ato di install");
} else {

  // mengambil data awal tiki online, gunanya untuk mengambil cookie di header page si TIKI          
    $url_1 = "http://www.tiki-online.com/";
    $c = curl_init();
  curl_setopt($c, CURLOPT_AUTOREFERER, 1);
  curl_setopt($c, CURLOPT_HTTPGET, 1);
  curl_setopt($c, CURLINFO_HEADER_OUT,1);
  curl_setopt($c, CURLOPT_VERBOSE, 1);
  curl_setopt($c, CURLOPT_HEADER, 1);
  curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($c, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  curl_setopt($c, CURLOPT_URL, $url_1);
  $hasil_1 = curl_exec($c);
  curl_close($c);

    // echo $hasil_1;
    // proses ngambil cookie si tiki dari hasil curl hasil_1;
    $cookie = CariKata($hasil_1,'PHPSESSID=',';');
    // echo $cookie;

    // data yg dipost tiki, kenapa empat data ?
    // dan dari mana kita tahu kalau si TIKI ada 4 variable. Cek di firebug, buat tab NETnya
    $postdata = array(
      "get_des" => "BEKASI",
      "get_ori" => "BANDUNG",
      "get_wg" => 1,
      "submit" => "Check"
  );
    // get_des, get_ori ini masih hardcode, belum ada pengecekan kota yang tersedia di TIKI, jadi seharusnya ada proses pengecekan kota sih.


    $url_2 = "http://www.tiki-online.com/?cat=KgfdshfF7788KHfskF"; // url ini selalu statik, tapi mungkin berubah, jadi mesti dihandel.

    // curl untuk cek harga tiki.
    $ch = curl_init();
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_URL, $url_2);
  curl_setopt($ch, CURLOPT_HEADER, true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($ch, CURLOPT_COOKIE, "PHPSESSID=$cookie;");
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
  $hasil_2 = curl_exec($ch);
  curl_close($ch);

    echo $hasil_2;

    // tinggal pecah2 data dari hasil_2 html untuk mengambil harga.
}

Sampai disini, coba buat file php. copy paste code diatas, lalu run. Moga harga tiki bisa terlihat.

Kode ini masih mentah, ada beberapa pengecekan seperti pengecekan kota tersedia atau tidak. Apa code random pada saat nembak harga berubah atau tidak.

Moga bisa berguna.

22 comments

  1. Mau tanya, kenapa kok pakai mengambil cookie dari halaman depan pak? padahal tanpa diambil pun hasil suddah bisa terlihat. terimakasih.

    1. kodingan lama om, kadang browser udah update. tapi biasanya ane ambil cookie karena ada proses selanjutnya yang membutuhkan cookie tersebut.

  2. muncul error Message: strpos() [function.strpos]: Offset not contained in string.
    sepertinya ada masalah dengan fungsi carikata()

      1. bukan ganti layout gan, tetapi limit request 1 ip ke web nya di limit hanya boleh beberapa kali dalam beberapa detik. jadi kalau sering refresh ya kena limit itu web nya ga bisa di akses

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: