【问题标题】:Is it possible to open a website in a browser (Chrome/Firefox) using python script?是否可以使用 python 脚本在浏览器(Chrome/Firefox)中打开网站?
【发布时间】:2015-05-09 13:35:32
【问题描述】:

当我在浏览器地址栏中输入网站地址并点击Go时,浏览器会发出如下数据包:

GET / HTTP/1.1
Host: stackoverflow.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:33.0) Gecko/20100101 Firefox/33.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: __qca=P0-1436433254-1422702693572; sgt=id=e2dfc663-bf2a-4c13-9387-91db3c901b72; usr=t=5Or7fZxDxUa8&s=xyx0L95dfE61; acct=t=OzuSyto294xCVVgU1B2tOow2C%2bSXqT0m&s=WmMKQ3H9NtZs%2b4%2bfbSnoLretaRnysYju; _ga=GA1.2.1042841397.1422702694
Connection: keep-alive

我使用 BurpSuite tool 捕获了上述数据包,这是对 StackOverflow.com 的请求

现在我想知道有没有办法用 python 自动执行这个请求?

换句话说,我想用 Python 脚本发送上述数据包,并在浏览器(例如 Chrome)中接收答案。有可能吗?

注意: 我也想修改数据包。我不想只发送一个简单的网站请求。我也想更改请求数据包的某些部分。例如,在某些数据包中,有一个名为 challenge 的参数,而我想向具有不同挑战的网站发送请求。此外,假设我想在网站中自动填写表格(例如注册不同的用户)。 (不完全是通过填写表格。例如,通过发送与我点击 Sign UpConfirm 时浏览器发送的相同数据包)

更新:

实际上,我想对 Web 服务器进行压力测试。所以我想发送一系列具有不同标头的请求(即针对不同用户的请求),为 1000 个不同的用户执行单个事务 1000 次。最后我想看看事务是否成功完成。 (假设交易是将一些钱存入不同用户的单个帐户 - 所以在测试结束时我可以检查该帐户的资金以查看交易是否成功。)或者我可以发送注册请求对于不同的用户,以及最终创建的帐户数量,将指定系统响应大量请求的效率。因此,Web 服务器对我的计算机的响应并不重要。但如果有可能看到它,那是一种乐趣

【问题讨论】:

  • 使用 Selenium:pypi.python.org/pypi/selenium
  • 您是想要打开一个实际的浏览器窗口还是只是发出请求并阅读响应?第一次使用 selenium,第二次使用请求
  • @ydaetskcoR 请查看更新部分。

标签: python google-chrome http firefox tcp


【解决方案1】:

使用Selenium与浏览器交互,可以从this页面开始,也可以阅读docs

下面的代码是一个简单的 selenium 用法:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://www.python.org")

试试这个并享受......

【讨论】:

  • 不错的图书馆,谢谢。但是是否也可以修改数据包?我不想只发送一个简单的网站请求。我也想更改请求数据包的某些部分。例如,在某些数据包中,有一个名为 challenge 的参数,而我想向具有不同挑战的网站发送请求。此外,假设我想在网站上自动填写表格。 (不完全是通过填写表格。例如,通过发送与我点击 SignUpConfirm 时浏览器发送的相同数据包)
猜你喜欢
  • 2012-05-27
  • 2012-10-16
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 2012-04-21
  • 2017-04-02
  • 2017-12-21
  • 2013-10-06
相关资源
最近更新 更多