wb 黑名单批量操作
0. 参考
yu961549745/WeiboBlackList 微博批量拉黑
1. 代码 block.py
更新内容:多线程,urllib.request 改为 requests + session
改成从 firefox 或 chrome 读取 cookie 更方便,懒得改了
#!/usr/bin/env python
# -*- coding: UTF-8 -* import requests
from requests.exceptions import (ConnectionError, ConnectTimeout, ReadTimeout, SSLError,
ProxyError, RetryError, InvalidSchema)
import threading
import Queue
import traceback import logging
def get_logger():
logger = logging.getLogger("threading_example")
logger.setLevel(logging.DEBUG) # fh = logging.FileHandler("d:/threading.log")
fh = logging.StreamHandler()
fmt = '%(asctime)s - %(threadName)-10s - %(levelname)s - %(message)s'
formatter = logging.Formatter(fmt)
fh.setFormatter(formatter) logger.addHandler(fh)
return logger logger = get_logger() def block():
while True:
try:
uid = task_queue.get()
data = dict(payload) #dict
data.update({'uid': uid})
resp = s.post(url, data=data)
except (ConnectionError, ConnectTimeout, ReadTimeout, SSLError,
ProxyError, RetryError, InvalidSchema) as err:
task_queue.task_done() ############### 重新 put 之前需要 task_done ,才能保证释放 task_queue.join()
task_queue.put(uid)
except Exception as err:
logger.debug(u'\nuid: {}\nerr: {}\ntraceback: {}'.format(uid, err, traceback.format_exc()))
task_queue.task_done() ############### 重新 put 之前需要 task_done ,才能保证释放 task_queue.join()
task_queue.put(uid)
else:
try:
code = resp.json()['code']
if code != '':
logger.debug(u'uid: {} code: {}'.format(uid, code))
else:
logger.debug(u'uid: {}'.format(uid))
except Exception as err:
logger.debug(u'\nuid: {}\nresp: {}\nerr: {}\ntraceback: {}'.format(uid, resp.text, err, traceback.format_exc()))
finally:
task_queue.task_done() if __name__ == '__main__': # lines: request in raw format captured from Fiddler
'''
['POST http://weibo.com/aj/filter/block?ajwvr=6 HTTP/1.1',
'Host: weibo.com',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0',
'Accept: */*',
'Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding: gzip, deflate',
'Content-Type: application/x-www-form-urlencoded',
'X-Requested-With: XMLHttpRequest',
'Referer: http://weibo.com/u/5471246591?is_hot=1',
'Content-Length: 57',
'Cookie: your cookie###########################################',
'Connection: keep-alive',
'',
'uid=5471246591&filter_type=1&status=1&interact=1&follow=1']
''' # 移除黑名单:
# In [317]: url2='http://weibo.com/aj/f/delblack?ajwvr=6'
# In [318]: resp = s.post(url2, data={'uid':'5209943797'}) # In [320]: resp.json()
# Out[320]: {u'code': u'100000', u'data': {}, u'msg': u''} with open('uids.txt') as f:
uids = [uid.strip() for uid in f.readlines()] with open('headers.txt') as f:
lines = [i.strip() for i in f.readlines()] url = lines[0].split()[1] headers = {}
for line in lines[2:-2]:
k, v = line.split(': ',1) #:space
headers[k] = v data=lines[-1]
# datas = [re.sub(r'uid=\d+','uid=%s'%uid ,data) for uid in uids]
payload = dict([i.split('=',1) for i in data.split('&')])
# payloads = [payload.update({'uid': uid}) for uid in uids]
# payloads = []
# for uid in uids:
# payload.update({'uid': uid})
# payloads.append(dict(payload)) ### dict # for payload in payloads:
# r = requests.post(url, headers=headers, data=payload)
# r.text
# {"code":"100000","msg":"\u96b1\u85cf\u6210\u529f","data":{}}
# In [287]: r.json()['code']
# Out[287]: u'100000' s = requests.Session()
s.headers = headers
s.mount('http://', requests.adapters.HTTPAdapter(pool_connections=1000, pool_maxsize=1000)) task_queue = Queue.Queue()
for uid in uids:
task_queue.put(uid) threads = []
for i in range(100):
t = threading.Thread(target=block) #args接收元组,至少(a,)
threads.append(t) for t in threads:
t.setDaemon(True)
t.start() task_queue.join()
print 'task done'
wb 黑名单批量操作的更多相关文章
- 【Hibernate框架】批量操作Batch总结
在我们做.net系统的时候,所做的最常见的批量操作就是批量导入.插入.更新.删除等等,以前我们怎么做呢?基本上有以下几种方式: 1.利用循环调用insert方法,一条条插入. public boole ...
- 基于黑名单的xss过滤器
/** * 类名称:AntiXssFilter * @version * 类描述:基于黑名单的xss过滤器 * @version * 创建人:xxx * @version * 创建时间:2015年11 ...
- druid sql黑名单 报异常 sql injection violation, part alway true condition not allow
最近使用druid,发现阿里这个连接池 真的很好用,可以监控到连接池活跃连接数 开辟到多少个连接数 关闭了多少个,对于我在项目中查看错误 问题,很有帮助, 但是最近发现里面 有条sql语句 被拦截了, ...
- Android课程---添加黑名单的练习2(课堂讲解)
实现黑名单的添加.修改.查询和删除,首先得有封装的3个类,便于使用 BlackNumber.java package com.hanqi.test3; /** * Created by Adminis ...
- Android课程---添加黑名单的练习(课堂讲解)
DBHelper.java package com.hanqi.test3; import android.content.Context; import android.database.sqlit ...
- Python文件使用“wb”方式打开,写入内容
Python文件使用"wb"方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入 ...
- 转网页WB.ExecWB控件打印方法
网页WB.ExecWB控件打印方法 2010-02-01 12:48 代码: <table width="100%" cellpadding="1" on ...
- document.all.wb.ExecWB
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri=&quo ...
- [WebServer] Tomcat 配置访问限制:访问白名单和访问黑名单
前言: 昨天配置了 Tomcat 服务器运行 PHP 的环境,但是通过观察 Tomcat 这几天的日志发现,有很多莫名其妙的 IP 访问主机下莫名其妙的地址,如:/80./testproxy.php. ...
随机推荐
- vc++基础班[27]---实现一个简单的任务管理器
因为任务管理器中涉及到进程的枚举操作,所以把两节课的知识点合并到一起来讲! ①.设计界面.以及列表控件变量的绑定: ②.列表控件样式的指定: m_TaskList.SetExtendedSty ...
- host, nslookup, dig、whois
一.host命令:DNS 查找使用程序 选项与参数: -a :代表列出该主机所有的相关信息,包括 IP.TTL 与除错讯息等等 -l :若后面接的那个 domain 设定允许 allow-transf ...
- Markdown中Latex 数学公式基本语法
原文地址:http://blog.csdn.net/u014630987/article/details/70156489 Markdown中Latex 数学公式基本语法 公式排版 分为两种排版: - ...
- [JLOI2011]飞行路线 不同的算法,不同的悲伤
题目 :BZOJ2763 洛谷P4568 [JLOI2011]飞行路线 一道最短路的题目,想想写个题解也不错(好久没写题解了_(:з」∠)_) 然后这道题中心思路是dijikstra处理最短路,所以没 ...
- node ,npm和nvm 版本的管理
node npm :node 的包管理 nvm :node 的版本管理 node -v ---->查看node 的版本 (v---->version) npm -v ----->n ...
- 转载:UML学习(一)-----用例图 (silent)
原文:http://www.cnblogs.com/silent2012/archive/2011/09/07/2169518.html 1.什么是用例图 用例图源于Jacobson的OOSE方法,用 ...
- springboot 文件上传大小配置
转自:https://blog.csdn.net/shi0299/article/details/69525848 springboot上传文件大小的配置有两种,一种是设置在配置文件里只有两行代码,一 ...
- vue 上实现无缝滚动播放文字系统公告
首先实现效果,当时的需求做的系统公告框设定一个宽度,超宽滚动播放,没超宽则静态展示,有了需求,想了下实现原理,最开始打算js更改字体内容的方式,但是想了下感觉会有点麻烦,想起之前做了表格的左侧边固定, ...
- python魔法函数之__getattr__与__getattribute__
getattr 在访问对象的属性不存在时,调用__getattr__,如果没有定义该魔法函数会报错 class Test: def __init__(self, name, age): self.na ...
- java----java工具类
System: Runtime: Random: Scanner: Arrays: MessageFormat: Math: 日期: Comparable: cloneable接口: 数字处理: MD ...