是否可以使用C#以编程方式更改Netgear无线路由器上的设置?我有经常更改的设置,我想创建自己的界面来进行这些更改.目前我导航到管理网页(10.0.0.1),它会提示我输入用户名和密码.在我进行身份验证后,我可以使用Web界面更改路由器的配置.
如果Netgear无法做到这一点,那么任何外部无线路由器都有开发人员的API吗?
chr*_*892 13
没有任何API可以做到这一点,但你可以编写一些东西来向路由器发出HTTP请求来模拟正在使用的webUI.
我猜大多数消费者路由器可能很容易交谈.身份验证可能只是基本领域.
Selenium 提供了一个firefox 插件,可让您记录与浏览器的手动交互。然后您可以将步骤导出到 python、ruby、java 或 c#。以编程方式调整我的路由器设置以关闭 wifi 对我有用。在录制时单击元素可确定您需要的一切。
此代码适用于 Actiontec MI424WR (FIOS)
编辑代码以添加您的用户名、密码和路由器地址。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
class Routr(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "http://routerip_or_address"
self.verificationErrors = []
self.accept_next_alert = True
def test_routr(self):
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_name("user_name").clear()
driver.find_element_by_name("user_name").send_keys("your_username")
driver.find_element_by_id("pass2").clear()
driver.find_element_by_id("pass2").send_keys("enter_your_password_here")
driver.find_element_by_link_text("OK").click()
driver.find_element_by_link_text("Change Wireless Settings").click()
driver.find_element_by_id("ws_off").click()
driver.find_element_by_link_text("Apply").click()
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True
def is_alert_present(self):
try: self.driver.switch_to_alert()
except NoAlertPresentException, e: return False
return True
def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally: self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14259 次 |
| 最近记录: |