Pode ver os resultados do concurso aqui: https://community.ipinfo.io/t/the-great-ip-hunt-is-over/3906 "," Comprei um pacote de autocolantes, uma T-Shirt \"I am a Huntathon Winner\", um Notecard com um mapa da Internet e umas meias IPinfo. "," Todos eles chegaram cerca de 3 semanas depois: ","/cdn-cgi/image/width=736,height=981.3333333333334,fit=crop,quality=80,metadata=/uploads/Untitled_768x1024_ee742b7991.png","/cdn-cgi/image/width=736,height=414,fit=crop,quality=80,metadata=/uploads/IMG_20240119_180353_1024x576_079b618419.jpg","/cdn-cgi/image/width=736,height=334.61603375527426,fit=crop,quality=80,metadata=/uploads/Xet_Q_Wetzo_BN_6xnz_ZJ_Qe_BOOHA_6_1p_PG_Nm_i_T_Mcur_F_T_Um0yr_G_Za_LL_Wd_S5_Ps_w_n_Mzejb8_J8_RIW_Ldye_J_Ozwc_Vv_UF_37_N8_P_Crd_VE_Zg_V2_D0_I_Fe_Wxv_MLI_Uom5_NCF_Ui_Z3_I8k1yu_O_Atz_J_We_N_Us8_B_Fqx_Rifkhw4_3838fcc22c.png"," A equipa do IPinfo estava à espera que a aplicação fosse objeto de engenharia inversa e, na verdade, ficou bastante satisfeita por saber como as pessoas encontraram soluções criativas para contornar os bloqueios."," No final, foi um momento divertido conhecer novas pessoas, aprender algumas coisas sobre proxies e engenharia reversa do Android e, claro, obter alguns produtos gratuitos."," Benji ","Por: ProxyScrape","Digite para pesquisar aqui...","Publicações recentes","Top 10 Pandas Functions Every Beginner Should Know","How to scrape tables from websites – a Python tutorial","How to Integrate Proxies with Postman: A Step-by-Step Guide ","How to Set Up Proxies in Selenium for Web Scraping","Teste de carga de desempenho do site usando JMeter e Proxy.","luz proxyscrape logótipo","https://proxyscrape.com/static/light_text_logo.svg","Procura ajuda com os nossos proxies ou
quer ajudar? Aqui estão as suas opções:","Crunchbase","Sobre nós","Obrigado a todos pelo fantástico apoio!","Ligações rápidas","Programa de afiliados","Prémio","ProxyScrape ensaio premium","Tipos de proxy","Países substitutos","Casos de utilização de proxy","Importante","Política de cookies","Declaração de exoneração de responsabilidade","Política de privacidade","Termos e condições","Redes sociais","Facebook","LinkedIn","Twitter","Quora","Telegrama","Discórdia","\n © Copyright 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Bélgica | VAT BE 0749 716 760\n"]}
Olá, sou o Benji, um utilizador de ProxyScrape , e adoro mexer em sistemas e descobrir como os programas funcionam em segundo plano. Também faço alguma administração de servidores e, ocasionalmente, codificação (https://benji.link). ProxyScrape pediu-me para escrever um pouco sobre a forma como usei os seus proxies, por isso aqui vai: No Dia das Bruxas de 2023, o ipinfo.io tinha
Olá, sou o Benji, um utilizador de ProxyScrape , e adoro mexer em sistemas e descobrir como os programas funcionam em segundo plano. Também faço alguma administração de servidores e, ocasionalmente, codificação(https://benji.link). ProxyScrape pediu-me para escrever um pouco sobre a utilização dos seus proxies, por isso aqui vai:
Para o Halloween de 2023, o ipinfo.io organizou o concurso "Halloween Hunt", em que os utilizadores deviam usar a aplicação IPinfo para enviar IPs e dados de GPS. Suponho que queriam melhorar os seus dados de IP, enquanto nós tínhamos a oportunidade de ganhar algum merchandising.
Todos os dias, durante duas semanas, foi escolhido um utilizador de entre as participações para ganhar o produto desse dia. Desta forma, não era um jogo de números e havia alguma sorte envolvida.
Comecei a minha viagem, da forma que provavelmente se pretendia, apenas com alguma automatização. Para isso, criei um lento auto-clicker para ligar/desligar o modo Avião no meu telemóvel para forçar um novo IP móvel do meu ISP. Isso funcionou muito bem, mas foi muito lento e só me deu cerca de 2-3 IPs por minuto.
Consegui cerca de 400-500 IPs no total com o meu telemóvel com esse método, antes de começar a pensar em formas mais rápidas.
Quando cheguei a casa nesse dia, comecei a fazer engenharia inversa da aplicação para ver se havia alguma forma de contornar facilmente o sistema e utilizar proxies sem ter de utilizar um telemóvel para o fazer.
Depois de inspecionar o tráfego de rede da aplicação, reparei que tudo o que estava a ser enviado era um único pedido para o ponto final json ("https://ipinfo.io/json"), com o ID do dispositivo.
Captura de ecrã do kit de ferramentas HTTP que monitoriza o tráfego que passa pela aplicação IPinfo. (ID do dispositivo realçado)
Tentei primeiro copiar um desses pedidos e utilizar proxies com ele, mas os pedidos não eram aceites. Através de algumas tentativas e erros, verifiquei que, de alguma forma, tinha a ver com as informações adicionais enviadas no pedido.
O ID do dispositivo e o URL do ponto de extremidade eram os únicos elementos importantes nesse pedido.
Depois de remover todos os outros detalhes para que o pedido tivesse apenas o device_id e nada mais, começou a funcionar.
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'
}
A ID do dispositivo pode ser simplesmente copiada de qualquer telemóvel a partir do qual se tenha instalado a aplicação, e eu poderia provavelmente ter feito algo para gerar a ID para mim sem a aplicação, mas não valeu a pena o incómodo.
Agora só faltava utilizar proxies, o que era a parte mais fácil.
Decidi utilizar proxies residenciaisProxyScrape porque tinha alguns dados gratuitos de uma promoção e eles permitiram-me obter milhares de IPs únicos.
Comecei com um script muito simples que enviava 100 pedidos como este:
Isto funcionou bem e aumentou a velocidade de cerca de 2-3 IPs por minuto para cerca de 30 IPs por minuto (com cada pedido a demorar entre 0,5-2 segundos).
Para aumentar ainda mais a velocidade, uma vez que isto ainda não era suficientemente rápido para mim, quis implementar um simples encadeamento para enviar os pedidos em simultâneo.
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)
Adicionei alguns IDs de dispositivos diferentes por precaução e obtive uma lista de 10 000 proxies rotativos de 1 minuto do ProxyScrape, que foram colados em proxies.txt. Também me certifiquei de adicionar um pequeno tempo de espera entre o início de cada thread para que não aconteça tudo exatamente ao mesmo tempo. (o que parecia causar problemas).
Agora, tudo o que tinha de fazer era alterar o número no "range(500)" para obter a contagem de milhares de IPs.
Todas estas alterações permitiram-me obter algumas centenas de IPs por minuto. Depois continuei a enviar alguns milhares de IPs todos os dias durante as duas semanas de caça.
De acordo com os organizadores do evento, consegui 149 mil IPs únicos, embora eu suspeite que tenha enviado muito mais. Isso colocou-me em 6º lugar a nível mundial e deixou-me com alguns produtos de qualidade.
Pode ver os resultados do concurso aqui: https://community.ipinfo.io/t/the-great-ip-hunt-is-over/3906
Comprei um pacote de autocolantes, uma T-Shirt "I am a Huntathon Winner", um Notecard com um mapa da Internet e umas meias IPinfo.
Todos eles chegaram cerca de 3 semanas depois:
A equipa do IPinfo estava à espera que a aplicação fosse objeto de engenharia inversa e, na verdade, ficou bastante satisfeita por saber como as pessoas encontraram soluções criativas para contornar os bloqueios.
No final, foi um momento divertido conhecer novas pessoas, aprender algumas coisas sobre proxies e engenharia reversa do Android e, claro, obter alguns produtos gratuitos.
Benji