我正在编写一个脚本,使用PhantomJs和socks5代理(For tor)访问重定向到其他url的url,它没有做到这一点。
但是当我没有代理访问同一个url时,它是成功的。
另外,当我访问其他一些不重定向的url时,比如whatismyipaddress.com通过socks5代理,它是成功的。
知道为什么当我组合socks5代理和访问重定向url时,它不会发生,还有什么工作要做吗?
谢谢。
发布于 2015-09-12 18:05:21
如果这是用Python编写并使用Selenium &PhantomJS编写的,下面是我的建议:
我首先通过npm导入Selenium并在节点中安装PhantomJS,就像我从this answer粘贴的示例一样。(npm -g install phantomjs)然后:
使用Selenium的示例
from selenium import webdriver
service_args = [
'--proxy=127.0.0.1:9050',
'--proxy-type=socks5',
]
driver = webdriver.PhantomJS('../path_to/phantomjs',service_args=service_args)
driver.set_window_size(1024, 768) # optional
driver.get('https://google.com/')
driver.save_screenshot('screen.png') # save a screenshot to disk
sbtn = driver.find_element_by_css_selector('button.gbqfba')
sbtn.click()否则,如果您想尝试使用urllib (Python3)或urllib2 (Python2.7x)包,则可以执行以下工作:
pip install SocksPy或pip3 install SocksPy安装了pip install SocksPy包。import socks, socketSOCKS_PORT = 9050
设置socks代理并包装url lib模块
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', SOCKS_PORT)
socket.socket = socks.socksocket
通过套接字执行DNS解析。
def getaddrinfo(*args): return [(socket.AF_INET, socket.SOCK_STREAM, 6,'', (args[0], args[1]))] socket.getaddrinfo = getaddrinfo
那么,在默认情况下,构建的任何urllib.request()都将使用您刚刚设置的代理。我希望这两种选择都能为你指明正确的方向。我可以更新,一旦你澄清了确切的设置和问题,你所面临的。
https://stackoverflow.com/questions/32534709
复制相似问题