【问题标题】:Python IP changingPython IP 更改
【发布时间】:2017-04-30 14:28:10
【问题描述】:

首先我看到了以下帖子:Selenium Python Changing IP,但它对我没有太大帮助。

所以我目前正在做一个测试网站并尝试制作一个反暴力脚本,我的目标是在 5 次错误尝试后阻止该 ip 并在 100 个不同的 ip 被禁止在帐户上尝试密码时锁定该帐户,这将使暴力破解非常困难(唯一的问题是您可以阻止用户登录)。

我的问题是我不知道如何更改 ip 以及如何找到 100 个不同的 ip(selenium 文章帮助我了解了如何更改 ip)。

我的需要是要么有一个与浏览器一起使用的脚本,并使用一个网站来更改 IP,要么是一个附加组件,或者进行 API 调用并从命令提示符处执行所有操作,并让该提示符从代理发送请求service/vpn(我的意思是让我的整个流量都在代理下,而不仅仅是浏览器)。

我想过每次都用tor来获取新的ips

【问题讨论】:

  • docs.python-requests.org/en/master/user/advanced 这里有关于代理的章节
  • 当你使用 tor 时,你不能使用 selenium。我认为您需要尝试使用代理服务,尽管它也有请求限制。所以并发将无法选择
  • 好的,感谢您的 cmets,我有一些阅读要做。
  • 你可以使用 tor 作为 selenium 的代理 @adeealamsz

标签: python selenium


【解决方案1】:

我最近在 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

【讨论】:

  • 什么脚本? @user7392005
  • 第一个,如果我使用httpbin.org/ip,我会得到[Errno 8] _ssl.c:507: EOF occurred in violation of protocol
  • 好的,只要删除system("sudo service tor reload")就可以了
  • 我可能需要说我的 tor 正在工作,这要归功于我需要加载它才能工作的脚本。
【解决方案2】:

[重要] 请注意,您需要将端口号转换为 int,否则本文中提到的任何方法都不起作用。

【讨论】:

    【解决方案3】:

    所以,据我了解,您正试图弄清楚如何测试您的蛮力密码猜测脚本。您在生产中不需要大量 IP,因为攻击者会很容易地解决为您寻找大量 IP 尝试的问题。相反,您需要弄清楚如何测试您的代码,即使您没有 100 个真实 IP 可供测试。 我的建议是将您的测试问题分为两部分:

    • 在您的网站中,有一个您在各处使用的函数(或对象方法)来确定当前 IP 是什么。测试它以确认它工作正常并正确检测到 IP。在您的暴力破解脚本或您需要找出当前 IP 的任何其他地方调用该函数/方法。

    • 向该脚本添加开发/测试模式选项。如果设置了一些特殊的标头,例如 HTTP_FAKE_IP,则从该标头获取 IP,而不是从连接系统的 IP。如果在您的网络浏览器中使用查询参数比使用 HTTP 标头更容易,那很好。

    • 然后在您的浏览器中生成 100 个(或您需要的任意多个)IP,但不要更改 IP,而是设置该标头/查询参数。

    • 请务必测试并确认在您网站的生产模式下,标头不能用于伪造 IP。

    您使用这种方法所做的是将暴力检测测试与与确定 IP 相关的实际逻辑分开。是的,你需要测试这两个东西,但你不需要一起测试它们。获得一两个真实 IP 来测试您的 IP 检测逻辑比获得测试暴力检测所需的 100 个 IP 更容易。您正在有效地使用一种称为模拟的测试技术,以使测试在现实世界中足够实用。

    【讨论】:

      猜你喜欢
      • 2017-01-05
      • 2018-07-04
      • 2018-01-18
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      相关资源
      最近更新 更多