批量获取及验证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系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
Sep 18 Python
python 全文检索引擎详解
Apr 25 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
8段用于数据清洗Python代码(小结)
Oct 31 Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 Python
python学习之panda数据分析核心支持库
May 07 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 采集程序原理分析篇
2010/03/05 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
document.compatMode介绍
2009/05/21 Javascript
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
python控制台显示时钟的示例
2014/02/24 Python
python去掉行尾的换行符方法
2017/01/04 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
python 如何引入协程和原理分析
2020/11/30 Python
入党自荐书范文
2015/03/05 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
正规欠条模板
2015/07/03 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
银行求职信范文
2019/05/13 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers