首先,我看到了以下帖子:Selenium Python Changing IP但它对我帮助不大。
所以我现在正在做一个测试网站,我试图制作一个反强制力脚本,我的目标是在5次不良尝试后阻止ip,并在100个不同的ip被禁止时锁定帐户在帐户上尝试密码,这会使暴力破解非常困难(唯一的问题是您可以阻止用户登录)。
我的问题是我不知道如何更改ip以及如何找到100个不同的ip(硒文章帮助我了解了如何更改ip)。
我需要有一个脚本使用浏览器并使用网站来更改IP,或附加组件,或进行API调用,并从命令提示符执行所有操作并从代理发送请求service / vpn(我的意思是将我的整个流量都放在代理下而不仅仅是浏览器上。)
我想过每次都使用tor来获取新的ips
答案 0 :(得分:2)
我最近在python 2.7 for linux中编写了这个脚本,它应该适合你:
#!/usr/bin/env python
import requests
from os import system
proxies = {'http': 'socks5://127.0.0.1:9050',
'https': 'socks5://127.0.0.1:9050'}
for x in range(100):
session = requests.session()
session.proxies = proxies
print session.get("http://httpbin.org/ip").text
system("sudo service tor reload") #sudo apt-get install tor
在selenium中实现这个(我没有测试这段代码!):
from selenium import webdriver
def change_proxy(proxy,port):
profile = webdriver.FirefoxProfile();
profile.set_preference("network.proxy.type", 1);
profile.set_preference("network.proxy.http", proxy);
profile.set_preference("network.proxy.http_port", port);
profile.set_preference("network.proxy.ssl", proxy);
profile.set_preference("network.proxy.ssl_port", port);
driver = webdriver.Firefox(profile);
return driver
答案 1 :(得分:1)
因此,据我了解,您正试图弄清楚如何测试您的暴力密码猜测脚本。你不需要在生产中使用大量的IP,因为攻击者可能会遇到寻找大量IP的问题。相反,您需要弄清楚如何测试代码,即使您没有100个真实的IP来测试。 我的建议是将测试问题分成两部分:
在您的网站中,有一个功能(或对象方法),您可以在任何地方使用它来确定当前的IP是什么。测试以确认它是否正常工作并正确检测IP。在您的暴力脚本或您需要的任何其他地方调用该功能/方法来确定当前的IP。
为该脚本添加开发/测试模式选项。如果设置了一些特殊标头,比如说HTTP_FAKE_IP,则从该标头而不是从连接系统的IP中获取IP。如果您的网络浏览器使用查询参数比使用HTTP标头更容易,那很好。
然后在您的浏览器中生成100个(或多个您需要的)IP,而不是更改IP,设置该标头/查询参数。
请务必测试并确认您网站的生产模式中的标题不能用于伪造IP。
您使用此方法所做的是将强力检测与确定IP相关的实际逻辑分开。是的,你需要测试这些东西,但是你不需要一起测试它们。获得一个或两个真实IP来测试IP检测逻辑比获得测试蛮力检测所需的100个IP更容易。您正在有效地使用称为模拟的测试技术,以使测试足以在现实世界中工作。
答案 2 :(得分:1)
[重要]请注意,您需要将端口号转换为 int ,否则本文中提到的方法均无效。