在客户端使用Python发起urllib请求

1 投票
3 回答
1117 浏览
提问于 2025-04-15 22:19

我写了一个Python应用程序,它使用urllib2库来发送网络请求,然后抓取数据。我可以把这个程序部署成一个网页应用,这样所有的urllib2请求都会通过我的服务器。这就有一个风险,就是因为很多用户发起了大量的网络请求,可能会导致我的服务器IP被封禁。另一种选择是创建一个桌面应用,但我不想这样做。有没有办法让我部署这个应用,让我的网络请求通过客户端来处理呢?一种方法是使用Jython创建一个小程序,但我听说Java小程序只能向它部署的服务器发送网络请求,绕过这个限制的唯一办法是创建一个服务器端的代理,这又会让我们回到服务器IP被封禁的问题上。

这听起来像是一个不可能解决的情况,我可能最终还是得创建一个桌面应用,但我想问问有没有人知道其他的解决方案。

谢谢。

3 个回答

0

这要看你打算怎么“抓取”数据:

  • 你可能会在向第三方网站发起AJAX请求时遇到问题。可以看看这个链接:通过AJAX和JavaScript进行屏幕抓取
  • 另一种方法是把操作放在服务器端进行,但要把结果缓存起来,这样就不会不必要地去访问第三方服务器。

可以在谷歌代码上查找diggstripper。

1

你可以使用从JavaScript发出的AJAX请求,这些请求是在客户端进行的。

  • 通过服务器和客户端之间的沟通,发送指令和必要的数据来发起请求。
  • 然后再通过AJAX与第三方服务器进行沟通。
1

你可以使用一个签名的Java小程序,它们可以利用Java的安全机制来访问任何网站。这个教程详细解释了你需要做的事情:http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html

从Flash小程序也可能实现类似的功能。不过,JavaScript是受到限制的,只能在发布的网站上使用,并且不允许像这样进行签名或设置安全例外,至少我知道是这样的。

撰写回答