设置代理.socks端口selenium

5

我习惯这样设置http端口:

profile.set_preference("network.proxy.http_port", "PORTNUMBER")

这个操作在没有使用代理的情况下是可行的。 但现在我需要连接到socks代理并设置端口,但无法正常工作。

profile.set_preference("network.proxy.socks_port", "PORTNUMBER")

我在文档中找不到相关参考,所以在这里询问。有什么想法吗?有更好的方法吗?

谢谢。


请查看以下示例中用户如何使用socks_port:http://www.wsec.be/blog/2012/05/22/using-selenium-for-web-based-hostname-enumeration/ 和 https://gist.github.com/2402041 - avasal
哇,我简直不敢相信我错过了那个“细节”哈哈。你能把它作为答案添加进去,这样我就可以接受了吗? - rowasc
3个回答

8

在您的情况下,我认为您应该将端口作为int类型而不是字符串使用。请参见以下详细信息。

首先让我们了解一下FF(或您在Selenium中使用的webdriver)如何设置SOCKS代理。

对于Firefox,请在URL框中输入about:config。

network.proxy.socks;10.10.10.1
network.proxy.socks_port;8999
network.proxy.socks_remote_dns;true
network.proxy.socks_version;5

你可以在Firefox配置文件目录下的prefs.js文件中看到如下内容:
user_pref("network.proxy.socks", "10.10.10.1");
user_pref("network.proxy.socks_port", 8999);
user_pref("network.proxy.type", 1);

请注意,network.proxy.socks是字符串类型,必须只设置为字符串。同样,network.proxy.socks_port必须是整数类型。
在使用selenium python模块进行设置时:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.proxy import *
import time

# for fresh FF profile
#profile = webdriver.FirefoxProfile() 
profile_path="/path/to/custom/profile/"
profile = webdriver.FirefoxProfile(profile_path)
# set FF preference to socks proxy
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.socks", "10.10.10.1")
profile.set_preference("network.proxy.socks_port", 8999)
profile.set_preference("network.proxy.socks_version", 5)
profile.update_preferences()
driver = webdriver.Firefox(firefox_profile=profile)

driver.get("http://whatismyip.com")
print driver.page_source
# sleep if want to show in gui mode. we do print it in cmd
time.sleep(25)
driver.close()
driver.quit()

请检查所给的偏好设置是否被支持并存在于FF about:config列表中。

6

2
一个简单的代码示例(即使是从这些网站中获取的)粘贴在这里会更好。然后,您可以使用链接引用您的来源。 - Loïc

0
ffprofile=webdriver.FirefoxProfile()
ffprofile.set_preference('network.proxy.type', 1)
ffprofile.set_preference('network.proxy.http', HTTP_IP)

ffprofile.set_preference("network.proxy.http_port", HTTPPORT)
ffprofile.set_preference('network.proxy.socks', 'SOCKS_IP')
ffprofile.set_preference('network.proxy.socks_port', SOCKSPORT)

ffprofile.update_preferences()

driver = webdriver.Remote(
   command_executor='http://SELENIUM:PORT/wd/hub',
   desired_capabilities=DesiredCapabilities.FIREFOX,
   browser_profile = ffprofile
   )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接