Vous pouvez consulter les résultats du concours ici : https://community.ipinfo.io/t/the-great-ip-hunt-is-over/3906 "," J'ai reçu un paquet d'autocollants, un t-shirt \"I am a Huntathon Winner\", une carte de notes avec une carte de l'internet et des chaussettes IPinfo. "," Ils sont tous arrivés environ 3 semaines plus tard : "," L'équipe d'IPinfo s'attendait à ce que l'application fasse l'objet d'une rétro-ingénierie, mais elle a été très heureuse d'apprendre que des personnes avaient trouvé des solutions créatives pour contourner les blocages."," En fin de compte, c'était un moment agréable de rencontrer de nouvelles personnes, d'apprendre des choses sur proxys et sur l'ingénierie inverse d'Android, et bien sûr, de recevoir des marchandises gratuites."," Benji ","Par : ProxyScrape","Messages récents","Getting Started with Robots.txt and Sitemaps for Web Scraping","A Guide to HTML Selectors for Web Scraping","Web Scraping with Kotlin Programing Language","Anti-Bot Systems: How Do They Work and Can They Be Bypassed?","ScrapegraphAI: Powering Web Scraping with LLMs","Vous cherchez de l'aide pour notre site proxys ou
? Voici les possibilités qui s'offrent à vous :","Crunchbase","A propos de nous","Merci à tous pour votre formidable soutien !","Liens rapides","Programme d'affiliation","Prime","ProxyScrape essai premium","Vérificateur de procuration en ligne","Types de mandataires","Pays mandataires","Cas d'utilisation du proxy","Important","Politique en matière de cookies","Clause de non-responsabilité","Politique de confidentialité","Conditions d'utilisation","Médias sociaux","Facebook","LinkedIn","Twitter","Quora","Télégramme","Discord","\n © Copyright 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belgique | VAT BE 0749 716 760\n"]}
Bonjour, je suis Benji, un utilisateur de ProxyScrape , et j'adore jouer avec les systèmes et découvrir comment les programmes fonctionnent en arrière-plan. Je fais aussi un peu d'administration de serveur et occasionnellement du codage (https://benji.link). ProxyScrape m'a demandé d'écrire un peu sur ce que j'ai fait de leur proxys , alors c'est parti : Pour Halloween 2023, ipinfo.io a organisé
Bonjour, je suis Benji, un utilisateur de ProxyScrape , et j'adore jouer avec les systèmes et découvrir comment les programmes fonctionnent en arrière-plan. Je fais également de l'administration de serveur et du codage occasionnel(https://benji.link). ProxyScrape m'a demandé d'écrire un peu sur ce que j'ai fait de leur proxys , alors c'est parti :
Pour Halloween 2023, ipinfo.io a organisé le concours "Halloween Hunt", où les utilisateurs étaient censés utiliser l'application IPinfo pour soumettre des IP et des données GPS. Je suppose qu'ils voulaient améliorer leurs données IP, tandis que nous avions la chance de gagner des produits dérivés.
Chaque jour, pendant deux semaines, ils ont choisi un utilisateur parmi les soumissions pour gagner la marchandise du jour. De cette manière, il ne s'agissait pas d'un jeu de chiffres mais d'une part de chance.
J'ai commencé mon voyage, de la manière dont il était probablement prévu, juste avec un peu d'automatisation. J'ai fait cela en créant un auto-clicker lent pour activer/désactiver le mode Avion sur mon téléphone afin de forcer une nouvelle IP mobile à partir de mon FAI. Cela a très bien fonctionné, mais c'était très lent et je n'ai obtenu que 2 à 3 IP par minute.
J'ai obtenu environ 400-500 adresses IP au total avec mon téléphone grâce à cette méthode, avant de commencer à penser à des moyens plus rapides.
Une fois rentré chez moi ce jour-là, j'ai commencé à faire de la rétro-ingénierie sur l'application pour voir s'il y avait un moyen de contourner facilement le système et d'utiliser proxys sans avoir à utiliser un téléphone.
Après avoir inspecté le trafic réseau de l'application, j'ai remarqué que tout ce qui était envoyé était une requête unique vers le point de terminaison json ("https://ipinfo.io/json"), avec l'identifiant de votre appareil.
Capture d'écran de la boîte à outils HTTP surveillant le trafic passant par l'application IPinfo. (ID de l'appareil en surbrillance)
J'ai d'abord essayé de copier l'une de ces demandes et d'utiliser proxys , mais les demandes n'étaient pas acceptées. Après quelques essais et erreurs, j'ai remarqué que le problème était lié aux informations supplémentaires envoyées dans la demande.
L'identifiant de l'appareil et l'URL du point final sont les seuls éléments importants de cette demande.
Après avoir supprimé tous les autres détails afin que la demande ne contienne que l'identifiant de l'appareil et rien d'autre, le système a commencé à fonctionner.
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'
}
L'identifiant de l'appareil peut être copié à partir de n'importe quel téléphone sur lequel vous avez installé l'application, et j'aurais probablement pu faire quelque chose pour qu'il génère l'identifiant pour moi sans l'application, mais cela ne valait pas la peine de s'embêter.
Il ne restait plus qu'à utiliser proxys, ce qui était la partie la plus facile.
J'ai décidé d'utiliser ProxyScrape residential proxys parce que j'avais des données gratuites provenant d'une promotion et qu'elles me permettaient d'obtenir des milliers d'adresses IP uniques.
J'ai commencé par un script très simple qui envoyait 100 requêtes de ce type :
Cela a bien fonctionné et a permis d'augmenter la vitesse d'environ 2-3 IP par minute à environ 30 IP par minute (chaque requête prenant entre 0,5 et 2 secondes).
Pour augmenter encore la vitesse, puisque ce n'était pas encore assez rapide pour moi, j'ai voulu implémenter un simple threading pour envoyer les requêtes simultanément.
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)
J'ai ajouté quelques ID d'appareils différents au cas où, et j'ai obtenu de ProxyScrape une liste de 10 000 proxys en rotation d'une minute, que j'ai collée dans proxys.txt. J'ai également veillé à ajouter un court temps de sommeil entre le démarrage de chaque thread afin que tous les threads ne se produisent pas exactement au même moment (ce qui semble poser problème). (ce qui semble poser des problèmes).
Il ne me restait plus qu'à modifier le nombre dans la "plage(500)" pour comptabiliser des milliers d'adresses IP.
Tous ces changements m'ont permis d'obtenir quelques centaines d'adresses IP par minute. J'ai ensuite continué à envoyer quelques milliers d'adresses IP chaque jour pendant les deux semaines qu'a duré la chasse.
Selon les organisateurs de l'événement, j'ai réussi à obtenir 149k IP uniques, bien que je soupçonne que j'en ai envoyé beaucoup plus. Cela m'a placé à la 6e place mondiale et m'a permis de remporter quelques produits dérivés.
Vous pouvez consulter les résultats du concours ici : https://community.ipinfo.io/t/the-great-ip-hunt-is-over/3906
J'ai reçu un paquet d'autocollants, un t-shirt "I am a Huntathon Winner", une carte de notes avec une carte de l'internet et des chaussettes IPinfo.
Ils sont tous arrivés environ 3 semaines plus tard :
L'équipe d'IPinfo s'attendait à ce que l'application fasse l'objet d'une rétro-ingénierie, mais elle a été très heureuse d'apprendre que des personnes avaient trouvé des solutions créatives pour contourner les blocages.
En fin de compte, c'était un moment agréable de rencontrer de nouvelles personnes, d'apprendre des choses sur proxys et sur l'ingénierie inverse d'Android, et bien sûr, de recevoir des marchandises gratuites.
Benji