我有一个网页,我是注册用户。我需要在没有浏览器(用户名,密码)的情况下登录,然后单击一个链接,将我的名字添加到网页上的列表中。我希望这个过程在后台工作,例如根本没有出现在屏幕上。我一直在尝试用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)
答案 0 :(得分:0)
有关http身份验证的示例,请参阅http://docs.python.org/library/urllib2.html#examples。不确定这是否是你要求的。
答案 1 :(得分:0)
使用按钮查看页面的HTML代码。如果按钮后面有一个url / link,你只需要在这个链接上进行GET,例如使用urllib2。
如果按钮urllib2触发了一些javascript,则无法帮助你。解决这个问题的一种方法可能是使用selenium,我从未使用它,但它应该是非常强大的。
答案 2 :(得分:0)
好的,具体取决于相关网站。但是,我假设您需要每次都创建一个新会话,并且服务器会在成功进行身份验证后发出存储在Cookie中的会话ID。
使用Burp或mitmproxy等代理可以帮助您调试任何问题。
如果您发现通过点击该链接发送的GET请求不会随着时间或每次新登录而发生变化,那么您可以事先确定。然后,您只需登录即可获取cookie,而不必担心页面内容,只需在您拥有需要随该请求发送的cookie时立即触发GET请求。
祝你好运,玩得开心:)答案 3 :(得分:0)