在无需浏览器的情况下激活链接
我有一个网页,我在上面注册了账号。现在我想在不打开浏览器的情况下登录(输入用户名和密码),然后点击一个链接,把我的名字添加到网页上的一个列表里。我希望这个过程能够在后台进行,也就是说,不在屏幕上显示任何内容。我一直在尝试用Python来实现这个功能,比如:
#!/usr/bin/env python2
#coding:utf-8
import sys
import urllib
import urllib2
import urlparse
import subprocess
from BeautifulSoup import BeautifulSoup
class MyOpener(urllib.FancyURLopener):
version = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;
rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15'
def process(url):
myopener = MyOpener()
page = myopener.open(url)
text = page.read()
page.close()
soup = BeautifulSoup(text)
links = []
for tag in soup.findAll('a', href=True):
tag['href'] = urlparse.urljoin(url, tag['href'])
links.append(tag['href'])
return links
if __name__ == "__main__":
links = process("http://www.dropbox.com")
for link in links:
#print link
if 'downloading' in link:
print link
fileHandle = urllib2.urlopen(link)
4 个回答
0
可以去看看这个链接:http://docs.python.org/library/urllib2.html#examples,里面有关于HTTP认证的例子。不太确定这是不是你想要的内容。
0
好吧,具体怎么做要看你要操作的网站。不过,我假设你每次都需要创建一个新的会话,并且服务器在你成功登录后会发一个会话ID,这个ID会存储在你的浏览器的cookies里。
- 首先,弄清楚登录页面是需要GET请求还是POST请求的参数。
- 进行登录,并保存返回的会话ID(在服务器的响应中会有Set-Cookie)。
- 弄清楚当你点击那个链接时,发送给服务器的请求是什么。
- 自己发送那个请求,服务器是无法分辨的。
- 如果你想更频繁地循环这个过程,可以选择先登出。
使用像Burp或mitmproxy这样的代理工具可以帮助你调试任何问题。
如果你发现点击那个链接发送的GET请求在一段时间内或每次新登录时都没有变化,那么你可以提前确定这一点。这样你就可以直接登录来获取cookie,不用管页面内容,只要在拿到需要的cookie后,立即发送GET请求。
祝你好运,玩得开心 :)