批量获取及验证HTTP代理的Python脚本


Posted in Python onApril 23, 2017

HTTP暴力破解、撞库,有一些惯用的技巧,比如:

1. 在扫号人人网时,我遇到单个账号错误两次,强制要求输入验证码,而对方并未实施IP策略。

我采用维护10万(用户名,密码) 队列的方式来绕过验证码。具体的做法是,当某个用户名、密码组合遇到需要验证码,就把该破解序列挂起,放到队列尾部等待下次测试,继续破解其他账号密码。

这样就可以保证2/3的时间都在进行正常破解和扫号。

2. 在破解美团网某系统账号时,我遇到了单个IP访问有一定限制,请求频率不可过快。于是我挂了72个 HTTP代理来解决这个问题。 看似每个IP的请求都正常,但其实从整个程序上看,效率还是挺可观的。

本篇我发出自己抓HTTP的脚本片段,其实只有几行。匿名代理是从这里抓取的:http://www.xici.net.co/nn/

首先获取代理列表 :

from bs4 import BeautifulSoup
import urllib2


of = open('proxy.txt' , 'w')

for page in range(1, 160):
  html_doc = urllib2.urlopen('http://www.xici.net.co/nn/' + str(page) ).read()
  soup = BeautifulSoup(html_doc)
  trs = soup.find('table', id='ip_list').find_all('tr')
  for tr in trs[1:]:
    tds = tr.find_all('td')
    ip = tds[1].text.strip()
    port = tds[2].text.strip()
    protocol = tds[5].text.strip()
    if protocol == 'HTTP' or protocol == 'HTTPS':
      of.write('%s=%s:%s\n' % (protocol, ip, port) )
      print '%s=%s:%s' % (protocol, ip, port)

of.close()

接着验证代理是否可用,因为我是用于破解美团网系统的账号,因此用了美团的页面标记:

#encoding=gbk
import httplib
import time
import urllib
import threading

inFile = open('proxy.txt', 'r')
outFile = open('available.txt', 'w')

lock = threading.Lock()

def test():
  while True:
    lock.acquire()
    line = inFile.readline().strip()
    lock.release()
    if len(line) == 0: break
    protocol, proxy = line.split('=')
    headers = {'Content-Type': 'application/x-www-form-urlencoded',
      'Cookie': ''}
    try:
      conn = httplib.HTTPConnection(proxy, timeout=3.0)
      conn.request(method='POST', url='http://e.meituan.com/m/account/login', body='login=ttttttttttttttttttttttttttttttttttttt&password=bb&remember_username=1&auto_login=1', headers=headers )
      res = conn.getresponse()
      ret_headers = str( res.getheaders() ) 
      html_doc = res.read().decode('utf-8')
      print html_doc.encode('gbk')
      if ret_headers.find(u'/m/account/login/') > 0:
        lock.acquire()
        print 'add proxy', proxy
        outFile.write(proxy + '\n')
        lock.release()
      else:
        print '.',
    except Exception, e:
      print e

all_thread = []
for i in range(50):
  t = threading.Thread(target=test)
  all_thread.append(t)
  t.start()
  
for t in all_thread:
  t.join()

inFile.close()
outFile.close()
Python 相关文章推荐
python搭建微信公众平台
Feb 09 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Python类绑定方法及非绑定方法实例解析
Oct 09 Python
深入理解python中的select模块
Apr 23 #Python
Python3如何解决字符编码问题详解
Apr 23 #Python
Python制作刷网页流量工具
Apr 23 #Python
Python读取指定目录下指定后缀文件并保存为docx
Apr 23 #Python
正确理解python中的关键字“with”与上下文管理器
Apr 21 #Python
python妙用之编码的转换详解
Apr 21 #Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 #Python
You might like
PHP简洁函数小结
2011/08/12 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
8个PHP数组面试题
2015/06/23 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
tab栏切换原理
2017/03/22 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
酒店个人求职信范文
2014/01/25 职场文书
初中班级口号
2014/06/09 职场文书
司机工作自我鉴定
2014/09/19 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
销售会议开幕词
2015/01/28 职场文书
2019年最新借条范本!
2019/07/08 职场文书
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB