在无需浏览器的情况下激活链接

0 投票
4 回答
1408 浏览
提问于 2025-04-17 02:29

我有一个网页,我在上面注册了账号。现在我想在不打开浏览器的情况下登录(输入用户名和密码),然后点击一个链接,把我的名字添加到网页上的一个列表里。我希望这个过程能够在后台进行,也就是说,不在屏幕上显示任何内容。我一直在尝试用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

如果你在使用Windows系统,可以找找看 PAMIE,这是一个简单的IE浏览器自动化工具,用Python来操作。

下面是一个简单的PAMIE示例:

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

PAMIE的3.0版本可以在 这里 找到。

0

好吧,具体怎么做要看你要操作的网站。不过,我假设你每次都需要创建一个新的会话,并且服务器在你成功登录后会发一个会话ID,这个ID会存储在你的浏览器的cookies里。

  1. 首先,弄清楚登录页面是需要GET请求还是POST请求的参数。
  2. 进行登录,并保存返回的会话ID(在服务器的响应中会有Set-Cookie)。
  3. 弄清楚当你点击那个链接时,发送给服务器的请求是什么。
  4. 自己发送那个请求,服务器是无法分辨的。
  5. 如果你想更频繁地循环这个过程,可以选择先登出。

使用像Burp或mitmproxy这样的代理工具可以帮助你调试任何问题。

如果你发现点击那个链接发送的GET请求在一段时间内或每次新登录时都没有变化,那么你可以提前确定这一点。这样你就可以直接登录来获取cookie,不用管页面内容,只要在拿到需要的cookie后,立即发送GET请求。

祝你好运,玩得开心 :)

撰写回答