【问题标题】:PhantomJs fail to visit a redirecting url through socks5 proxyPhantomJs 无法通过 socks5 代理访问重定向 url
【发布时间】:2015-09-12 02:56:27
【问题描述】:

我正在使用带有 socks5 代理(用于 tor)的 PhantomJs 编写一个脚本来访问一个重定向到其他 url 的 url,但它失败了。

但是当我在没有代理的情况下访问相同的url时,它是成功的。

另外,当我通过socks5代理访问其他一些不重定向的url时,比如whatismyipaddress.com,它是成功的。

知道为什么当我结合 socks5 代理和访问重定向 url 时,它没有发生,有什么解决方法吗?

谢谢。

【问题讨论】:

  • 您可以发布您遇到的具体错误吗?我有一些建议,但根据您收到的确切错误,它们可能是错误的。最好发布您的示例代码和生成代码的错误。
  • 你能分享你的源代码吗? SOCKS5 不适合我。

标签: redirect phantomjs tor socks


【解决方案1】:

如果这是用 Python 编写并使用 Selenium 和 PhantomJS,我推荐以下内容:

我将首先导入 Selenium 并通过 npm 在节点中安装 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 (Python 3) 或 urllib2 (Python 2.7x) 包,那么以下工作:

  1. 确保在 Python 3.x 上使用 pip install SocksPypip3 install SocksPy 安装了 SocksPy 包。
  2. 将所有内容导入:import socks, socket
  3. 请参阅我在此处提供的示例代码,它将您的连接和 DNS 查找绑定到通过 socks 连接:

    设置 TOR 连接

    SOCKS_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() 将默认使用您刚刚设置的代理。

我希望这两个选项都能为您指明正确的方向。一旦你澄清了你所面临的确切设置和问题,我可以更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 2021-05-21
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2019-02-03
    • 2020-08-15
    • 2012-12-14
    相关资源
    最近更新 更多