批量获取及验证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 相关文章推荐
centos系统升级python 2.7.3
Jul 03 Python
python迭代器实例简析
Sep 25 Python
Python中关于字符串对象的一些基础知识
Apr 08 Python
python监控文件或目录变化
Jun 07 Python
python 循环while和for in简单实例
Aug 16 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
Jul 27 Python
python使用zip将list转为json的方法
Dec 31 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
Python判断字符串是否为空和null方法实例
Apr 26 Python
Python如何脚本过滤文件中的注释
May 27 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 Python
七个非常实用的Python工具包总结
Jun 15 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和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
PHP获取音频文件的相关信息
2015/06/22 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
JS继承用法实例分析
2015/02/05 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
2015/05/25 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
js实现打字小游戏
2019/12/17 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
python检索特定内容的文本文件实例
2018/06/05 Python
Python 下载及安装详细步骤
2019/11/04 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
武汉某公司的C#笔试题面试题
2015/12/25 面试题
《乡愁》教学反思
2014/02/18 职场文书
采购员工作总结范文
2015/08/12 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
golang interface判断为空nil的实现代码
2021/04/24 Golang
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers
Golang 并发编程 SingleFlight模式
2022/04/26 Golang