没有浏览器激活链接

时间:2011-09-17 08:33:59

标签: python urllib

我有一个网页,我是注册用户。我需要在没有浏览器(用户名,密码)的情况下登录,然后单击一个链接,将我的名字添加到网页上的列表中。我希望这个过程在后台工作,例如根本没有出现在屏幕上。我一直在尝试用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 :(得分:0)

有关http身份验证的示例,请参阅http://docs.python.org/library/urllib2.html#examples。不确定这是否是你要求的。

答案 1 :(得分:0)

使用按钮查看页面的HTML代码。如果按钮后面有一个url / link,你只需要在这个链接上进行GET,例如使用urllib2。

如果按钮urllib2触发了一些javascript,则无法帮助你。解决这个问题的一种方法可能是使用selenium,我从未使用它,但它应该是非常强大的。

答案 2 :(得分:0)

好的,具体取决于相关网站。但是,我假设您需要每次都创建一个新会话,并且服务器会在成功进行身份验证后发出存储在Cookie中的会话ID。

  1. 如果登录页面需要GET或POST参数
  2. ,请确定
  3. 执行登录并存储返回的会话ID(服务器响应中的Set-Cookie)
  4. 确定单击该链接时向服务器发送的请求。
  5. 自己发送请求,服务器无法区分。
  6. 如果要比会话超时更频繁地循环,请再次注销。
  7. 使用Burp或mitmproxy等代理可以帮助您调试任何问题。

    如果您发现通过点击该链接发送的GET请求不会随着时间或每次新登录而发生变化,那么您可以事先确定。然后,您只需登录即可获取cookie,而不必担心页面内容,只需在您拥有需要随该请求发送的cookie时立即触发GET请求。

    祝你好运,玩得开心:)

答案 3 :(得分:0)

如果你在Windows上,你可以找一个简单的IE Python自动化工具PAMIE

简单PAMIE示例:

import cPAMIE as PAMIE
ie = PAMIE( )
ie.Navigate("'www.google.com" )
ie.textBoxSet("q", "python" )
ie.buttonClick("'btnG" ) 

PAMIE 3.0版本为here