Результаты конкурса можно посмотреть здесь: https://community.ipinfo.io/t/the-great-ip-hunt-is-over/3906. "," Я купил себе набор наклеек, футболку \"Я - победитель Хантэтона\", блокнот с картой Интернета и носки IPinfo. "," Все они были доставлены примерно через 3 недели: "," Сразу оговорюсь, что команда IPinfo ожидала, что приложение будет подвергнуто реверс-инжинирингу, и на самом деле была очень рада узнать, как люди находят креативные решения в обход блоков."," В конце концов, это было веселое время, когда можно было познакомиться с новыми людьми, узнать кое-что о прокси-серверах и реверс-инжиниринге Android, и, конечно же, получить немного бесплатных товаров."," Бенджи ","По: ProxyScrape","Последние сообщения","Нагрузочное тестирование производительности сайта с помощью JMeter и Proxy.","How to Scrape eBay in 2024: A Beginner's Guide","Getting Started with Robots.txt and Sitemaps for Web Scraping","A Guide to HTML Selectors for Web Scraping","Web Scraping with Kotlin Programing Language","Ищете помощь с нашими прокси или
хотите помочь? Вот ваши варианты:","Crunchbase","О нас","Спасибо всем за потрясающую поддержку!","Быстрые ссылки","Партнерская программа","Премиум","ProxyScrape премиум-проба","Проверка прокси-сервера онлайн","Типы прокси-серверов","Страны-посредники","Примеры использования прокси-сервера","Важно","Политика использования файлов cookie","Отказ от ответственности","Политика конфиденциальности","Условия и положения","Социальные сети","Facebook","LinkedIn","Twitter","Quora","Telegram","Дискорд","\n © Copyright 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belgium | VAT BE 0749 716 760\n"]}
Привет, я Бенджи, пользователь ProxyScrape , и мне нравится возиться с системами и выяснять, как программы работают в фоновом режиме. Я также занимаюсь администрированием серверов и иногда кодингом (https://benji.link). ProxyScrape попросил меня написать немного о том, для чего я использовал их прокси, так что поехали: На Хэллоуин 2023 года ipinfo.io провел
Привет, я Бенджи, пользователь ProxyScrape , и мне нравится возиться с системами и выяснять, как программы работают в фоновом режиме. Я также занимаюсь администрированием серверов и иногда кодингом(https://benji.link). ProxyScrape попросил меня написать немного о том, для чего я использую их прокси, так что вот так:
На Хэллоуин 2023 года ipinfo.io провела конкурс "Охота на Хэллоуин", в котором пользователи должны были использовать приложение IPinfo для отправки IP-адресов и данных GPS. Полагаю, они хотели улучшить свои данные об IP-адресах, а мы получили шанс выиграть какой-нибудь товар.
Каждый день в течение 2 недель они выбирали одного пользователя из представленных, который выигрывал товар этого дня. Таким образом, это не было полной игрой чисел, и было немного удачи.
Я начал свое путешествие, как, вероятно, и было задумано, просто с некоторой автоматизации. Для этого я сделал медленный автокликер для включения/выключения режима Airplane на моем телефоне, чтобы принудительно получить новый мобильный IP от моего провайдера. Это отлично работало, но было очень медленным и давало мне только около 2-3 IP в минуту.
С помощью этого метода я получил около 400-500 IP со своего телефона, прежде чем начал думать о более быстрых способах.
Придя домой в тот день, я начал разбираться с приложением, чтобы понять, можно ли как-то обойти систему и использовать прокси, не прибегая к помощи телефона.
Проанализировав сетевой трафик приложения, я заметил, что отправляется всего один запрос к конечной точке json ("https://ipinfo.io/json") с идентификатором вашего устройства.
Снимок экрана из HTTP-инструментария, отслеживающего трафик, проходящий через приложение IPinfo. (Идентификатор устройства выделен)
Сначала я попробовал просто скопировать один из этих запросов и использовать с ним прокси, но запросы не принимались. Путем проб и ошибок я понял, что это как-то связано с дополнительной информацией, отправляемой в запросе.
Идентификатор устройства и URL конечной точки - единственное, что было важно в этом запросе.
После удаления всех остальных деталей, чтобы в запросе был только device_id и больше ничего, он заработал.
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'
}
Идентификатор устройства можно просто скопировать с любого телефона, на который вы установили приложение. Возможно, я мог бы сделать что-то, что заставило бы его генерировать идентификатор без приложения, но это не стоило таких хлопот.
Теперь оставалось только использовать прокси-серверы, что было проще простого.
Я решил использовать жилые проксиProxyScrape , потому что у меня было немного бесплатных данных, полученных в рамках акции, и они позволили мне получить тысячи уникальных IP-адресов.
Я начал с очень простого скрипта, который отправлял 100 запросов следующим образом:
Это отлично сработало и увеличило скорость с примерно 2-3 IP в минуту до примерно 30 IP в минуту (каждый запрос занимает 0,5-2 секунды).
Чтобы еще больше увеличить скорость, поскольку для меня это все равно было недостаточно быстро, я хотел реализовать простую многопоточность для одновременной отправки запросов.
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)
Я добавил несколько различных идентификаторов устройств на всякий случай и получил список из 10 000 1-минутных вращающихся прокси из ProxyScrapewhich, которые были вставлены в файл proxies.txt. Я также позаботился о том, чтобы добавить короткое время сна между запуском каждого потока, чтобы все это не происходило в одно и то же время. (что, похоже, вызывало проблемы).
Теперь мне оставалось только изменить число в "range(500)", чтобы подсчитать тысячи IP.
Все эти изменения позволили мне получать несколько сотен IP-адресов в минуту. Затем я продолжал отправлять по несколько тысяч IP каждый день в течение двух недель охоты.
По данным организаторов мероприятия, мне удалось получить 149 тысяч уникальных IP, хотя я подозреваю, что отправил гораздо больше. Это позволило мне занять 6-е место по всему миру и получить неплохой мерч.
Результаты конкурса можно посмотреть здесь: https://community.ipinfo.io/t/the-great-ip-hunt-is-over/3906.
Я купил себе набор наклеек, футболку "Я - победитель Хантэтона", блокнот с картой Интернета и носки IPinfo.
Все они были доставлены примерно через 3 недели:
Сразу оговорюсь, что команда IPinfo ожидала, что приложение будет подвергнуто реверс-инжинирингу, и на самом деле была очень рада узнать, как люди находят креативные решения в обход блоков.
В конце концов, это было веселое время, когда можно было познакомиться с новыми людьми, узнать кое-что о прокси-серверах и реверс-инжиниринге Android, и, конечно же, получить немного бесплатных товаров.
Бенджи