logo proxyscrape gelap

Bagaimana saya menggunakan proksi ProxyScrape untuk memenangkan barang dagangan ipinfo.io

Jan-05-20245 menit baca

Hai, saya Benji, seorang pengguna ProxyScrape , dan saya suka mengutak-atik sistem dan mencari tahu bagaimana program bekerja di latar belakang. Saya juga melakukan beberapa administrasi server dan sesekali melakukan pengkodean(https://benji.link). ProxyScrape meminta saya untuk menulis sedikit tentang apa yang saya gunakan untuk proksi mereka, jadi ini dia:

Untuk Halloween 2023, ipinfo.io mengadakan kontes "Halloween Hunt", di mana para pengguna harus menggunakan aplikasi IPinfo untuk mengirimkan data IP dan GPS. Saya menduga mereka ingin meningkatkan data IP mereka, sementara kami berkesempatan untuk memenangkan beberapa merchandise.

Setiap hari selama 2 minggu mereka memilih seorang pengguna dari kiriman yang masuk untuk memenangkan merchandise hari itu. Dengan begitu, ini bukanlah permainan angka sepenuhnya dan ada unsur keberuntungan yang terlibat.

Saya memulai perjalanan saya, seperti yang mungkin dimaksudkan, hanya dengan beberapa otomatisasi. Saya melakukan ini dengan membuat klik otomatis yang lambat untuk menghidupkan/mematikan mode Pesawat pada ponsel saya untuk memaksa IP seluler baru dari ISP saya. Ini bekerja dengan baik, tetapi sangat lambat dan hanya memberi saya sekitar 2-3 IP per menit.

Saya mendapatkan total sekitar 400-500 IP dengan ponsel saya dengan metode tersebut, sebelum saya mulai memikirkan cara yang lebih cepat.

Setelah saya tiba di rumah hari itu, saya mulai merekayasa ulang aplikasi untuk melihat apakah ada cara agar saya dapat dengan mudah menyiasati sistem dan menggunakan proksi tanpa harus menggunakan telepon untuk itu.

Setelah memeriksa lalu lintas jaringan dari aplikasi, saya melihat bahwa yang dikirim hanyalah satu permintaan ke titik akhir json ("https://ipinfo.io/json"), dengan ID perangkat Anda.


Tangkapan layar dari toolkit HTTP yang memantau lalu lintas yang melalui aplikasi IPinfo. (ID Perangkat disorot)

Pertama-tama saya mencoba menyalin salah satu permintaan tersebut dan menggunakan proksi dengannya, tetapi permintaan tidak diterima. Melalui beberapa percobaan dan kesalahan, saya menyadari bahwa hal ini mungkin ada hubungannya dengan informasi tambahan yang dikirim dalam permintaan.

ID perangkat dan URL titik akhir adalah satu-satunya hal yang penting dalam permintaan itu.

Setelah menghapus semua detail lainnya sehingga permintaan hanya memiliki device_id dan tidak ada yang lain, permintaan tersebut mulai bekerja.

url = "https://ipinfo.io/json?token=app_test"


headers = {
  'Host': 'ipinfo.io',
  'User-Agent': 'IPinfo/Android-Lib/3.0.6/IPinfo',
  'x-conn-details': 'device_id=d813353d28df2ad3'
}

ID perangkat bisa Anda salin dari ponsel mana pun yang Anda instal aplikasinya, dan saya mungkin bisa membuat sesuatu yang bisa menghasilkan ID untuk saya tanpa aplikasi, tetapi itu tidak sebanding dengan kerumitannya.

Sekarang, satu-satunya hal yang perlu dilakukan adalah menggunakan proxy, yang merupakan bagian yang mudah.

Saya memutuskan untuk menggunakan proxy perumahanProxyScrape karena saya memiliki beberapa data gratis dari sebuah promosi, dan mereka mengizinkan saya mendapatkan ribuan IP unik.

Saya memulai dengan skrip yang sangat sederhana yang mengirimkan 100 permintaan seperti ini:


Hal ini bekerja dengan baik dan meningkatkan kecepatan dari sekitar 2-3 IP per menit menjadi sekitar 30 IP per menit (dengan setiap permintaan membutuhkan waktu antara 0,5-2 detik).

Untuk meningkatkan kecepatan lebih lanjut, karena ini masih belum cukup cepat bagi saya, saya ingin menerapkan beberapa threading sederhana untuk mengirim permintaan secara bersamaan.

import requests
import concurrent.futures
import time
import random


# open the proxies.txt file and read the proxies
proxies = open("proxies.txt", "r").read().split("\n")


url = "https://ipinfo.io/json?token=app_test"


device_ids = {
  "3d8e0d7245a92152",
  "a9c7b2b233dd06b8",
  "661035895999a7fe",
  "d813353d28df2ad3",
  "982078c380f4fe38"
}


success_count = 0


def send_request(i):
  global success_count
  try:
    # pick a random number between 1 and 1000
    rand = random.randint(1, 10000)
    proxy = {"https": proxies[rand]}
    device_id = random.choice(list(device_ids))


    payload = {}
    headers = {
        'Host': 'ipinfo.io',
        'User-Agent': 'IPinfo/Android-Lib/3.0.6/IPinfo',
        'x-conn-details': 'device_id={}'.format(device_id)
    }


    response = requests.request("GET", url, headers=headers, data=payload, proxies=proxy, timeout=20)
    print("Request #{}: \n{} \nTime taken: {}\n".format(i, response.text, response.elapsed.total_seconds()))
    success_count += 1
  except Exception as e:
    print("Request #{}: Error - {}".format(i, str(e)))


with concurrent.futures.ThreadPoolExecutor() as executor:
  futures = []
  for i in range(500):
    time.sleep(0.02)  # wait for 100ms before starting each thread
    futures.append(executor.submit(send_request, i))


  try:
    for future in concurrent.futures.as_completed(futures):
      future.result()
  except KeyboardInterrupt:
    print("Program interrupted by user.")
    for future in futures:
      future.cancel()
  except Exception as e:
    print("An error occurred:", str(e))


print("Success count:", success_count)

Saya menambahkan beberapa ID perangkat yang berbeda untuk berjaga-jaga, dan saya mendapatkan daftar 10.000 proxy berputar 1 menit dari ProxyScrapeyang disisipkan ke dalam proxy.txt. Saya juga memastikan untuk menambahkan waktu tidur singkat di antara waktu memulai setiap utas sehingga semuanya tidak terjadi pada waktu yang sama. (yang tampaknya menyebabkan masalah.)

Sekarang yang harus saya lakukan adalah mengubah angka di "range(500)" untuk menghitung ribuan IP.

Semua perubahan ini memungkinkan saya mendapatkan beberapa ratus IP per menit. Saya kemudian terus mengirim beberapa ribu IP setiap hari selama 2 minggu perburuan.

Menurut penyelenggara acara, saya berhasil mendapatkan 149 ribu IP unik, meskipun saya menduga bahwa saya mengirim lebih banyak lagi. Hal ini menempatkan saya di posisi ke-6 di seluruh dunia dan memberikan saya beberapa merchandise yang manis.
Anda dapat melihat hasil kontes di sini: https://community.ipinfo.io/t/the-great-ip-hunt-is-over/3906

Saya mendapatkan paket stiker, T-Shirt "I am a Huntathon Winner", Notecard dengan peta Internet, dan kaus kaki IPinfo.

Semua ini tiba sekitar 3 minggu kemudian:

Sebagai penafian, tim IPinfo mengharapkan aplikasi ini untuk direkayasa ulang dan sebenarnya cukup senang mengetahui bagaimana orang-orang menemukan solusi kreatif di sekitar blok.

Pada akhirnya, ini adalah waktu yang menyenangkan untuk bertemu dengan orang-orang baru, belajar beberapa hal tentang proxy dan reverse engineering Android, dan tentu saja, mendapatkan beberapa merchandise gratis.

Benji.