批量获取及验证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抓取模板之家的CSS模板
Mar 16 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
从django的中间件直接返回请求的方法
May 30 Python
Python对象与引用的介绍
Jan 24 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
python对象与json相互转换的方法
May 07 Python
Python关于__name__属性的含义和作用详解
Feb 19 Python
深入了解Python装饰器的高级用法
Aug 13 Python
如何利用Python动态模拟太阳系运转
Sep 04 Python
改变 Python 中线程执行顺序的方法
Sep 24 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
提取HTML标签
2006/10/09 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
jQuery Clone Bug解决代码
2010/12/22 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
Javascript实现信息滚动效果
2017/05/18 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
python使用PyFetion来发送短信的例子
2014/04/22 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
Python中异常重试的解决方案详解
2017/05/05 Python
Python高斯消除矩阵
2019/01/02 Python
django celery redis使用具体实践
2019/04/08 Python
python pytest进阶之fixture详解
2019/06/27 Python
Python的形参和实参使用方式
2019/12/24 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
原料仓管员岗位职责
2014/04/12 职场文书
大学新生入学教育方案
2014/05/16 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python