(三)C# QQ讨论组广告群发工具——ADSL 拨号实现(附源码)
上篇我们说到了如何实现登陆,但是腾讯对某一个IP在某一段时间的登陆行为存在检测,对于存在异常的IP会出现验证码,但是腾讯的验证码比较难识别,或许是我对图形识别(匹配)的技术还认识的不够深刻。C#/Java技术交流群:96020642,传送门:Rolends
噪线,倾斜,字符连接,镂空,噪线字符同色.这些都是识别的难点,具体的算法我试过,识别成功率很低,技术不够没办法,好了偏题了,还是说ADSL拨号的实现ADSL拨号需要调用windows api来实现。
调用RASAPI32.DLL
(三)C# QQ讨论组广告群发工具——ADSL 拨号实现(附源码)
ADSL的所有操作都要调用这个dll,详细的调用方法和参数,大家可以查询MSDN
不过对于我这种懒人,明白了原理,能使用拿来主义就拿哦
在codeplex上有个叫dotras的项目http://dotras.codeplex.com/这个项目封装了rasapi dll的操作,大家可以下载下来使用,不用自己在封装了,关于操作方法可以参见实例,下载过来后有示例的:
C# Code By wuleba.com
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
List<string> historyIps = new List<string>(); private void ChangeIP() { SysConfig.IsChangeIp = true; QQHelper.WriteLog ("更换IP"); HANDUPCON: string oldIpAddress = ""; RasConnection oldConn = null; GetIPAddress (out oldIpAddress, out oldConn); string entryName = ""; if (oldConn != null) { entryName = oldConn.EntryName; RasIPInfo ipAddresses = (RasIPInfo) oldConn.GetProjectionInfo (RasProjectionType.IP); string oldIp = ipAddresses.IPAddress.ToString(); ipAddresses = null; QQHelper.WriteLog ("现在的IP是" + oldIp); bool isUp = false; try { Console.WriteLine ("开始挂断"); oldConn.HangUp (10 * 1000); Thread.Sleep (SysConfig.RasHangUpSleepTime); if (RasConnection.GetActiveConnectionById (oldConn.EntryId) != null) { Console.WriteLine ("结束挂断失败,重新挂断"); goto HANDUPCON; } oldConn = null; Console.WriteLine ("结束挂断"); isUp = true; } catch (Exception ex) { QQHelper.WriteLog ("宽带连接挂断失败," + ex.Message); } } CHANGEIP: try { var dt = SqliteHelper.GetDataTable ("select * from sys_config"); RasDialer rs = new RasDialer(); if (entryName == "") { entryName = dt.Rows[0]["SC_NetEntryName"].ToString(); } rs.EntryName = entryName; rs.PhoneBookPath = RasPhoneBook.GetPhoneBookPath (RasPhoneBookType.AllUsers); rs.Credentials = new NetworkCredential (dt.Rows[0]["SC_NetUser"].ToString() , dt.Rows[0]["SC_NetPwd"].ToString() ); dt.Dispose(); rs.Dial(); rs.Dispose(); } catch (Exception ex) { QQHelper.WriteLog ("宽带连接拨号失败," + ex.Message); Thread.Sleep (SysConfig.DialFaildSleepTime); goto CHANGEIP; } if (oldConn != null) { string ipAddresses = ""; GetIPAddress (out ipAddresses, out oldConn); oldConn = null; if (oldIpAddress == ipAddresses) { QQHelper.WriteLog ("IP和上次重复,重新拨号"); Thread.Sleep (SysConfig.DialFaildSleepTime); goto HANDUPCON; } else { if (historyIps.Contains (ipAddresses) ) { QQHelper.WriteLog ("IP和前" + SysConfig.IPLoopCount + "次重复,重新拨号"); Thread.Sleep (SysConfig.DialFaildSleepTime); goto HANDUPCON; } if (historyIps.Count >= SysConfig.IPLoopCount) { historyIps.RemoveAt (0); historyIps.Add (ipAddresses); } historyIps.Add (ipAddresses); } QQHelper.WriteLog ("现在的IP是" + ipAddresses); } SysConfig.IsChangeIp = false; } |
切换IP操作
C# Code By wuleba.com
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
private void GetIPAddress (out string ipAddress, out RasConnection oldConn) { oldConn = null; ipAddress = ""; var conns = RasConnection.GetActiveConnections(); foreach (var conn in conns) { if (conn.Device.DeviceType.ToLower() == "pppoe") { oldConn = conn; break; } } conns = null; if (oldConn != null) { try { RasIPInfo ipAddresses = (RasIPInfo) oldConn.GetProjectionInfo (RasProjectionType.IP); ipAddress = ipAddresses.IPAddress.ToString(); ipAddresses = null; } catch { } } } |
获取连接信息
这一篇到此结束,期待 Rolends 的下一篇教程,吾乐吧软件站将会对此项目进行跟进,第一时间获得更新。
下载说明:① 请不要相信网站的任何广告;② 当你使用手机访问网盘时,网盘会诱导你下载他们的APP,大家不要去下载,直接把浏览器改成“电脑模式/PC模式”访问,然后免费普通下载即可;③ 123云盘限制,必须登录后才能下载,且限制每人每天下载流量1GB,下载 123云盘免流量破解工具
版权声明:
小编:吾乐吧软件站
链接:https://wuleba.com/4216.html
来源:吾乐吧软件站
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。


Eva Haven
开源不顶,没有人品~~加油
Sunkong
第1、2篇在哪?博主应该做一个目录,哈哈
吾乐吧软件站@Sunkong
感谢反馈,目录的话,我等出完全部之后在弄吧。现在先在评论处加上地址:
(一)C# QQ讨论组广告群发工具——QQ登陆功能的实现上篇(附源码)
(二)C# QQ讨论组广告群发工具——QQ登陆功能的实现下篇(附源码)
(三)C# QQ讨论组广告群发工具——ADSL 拨号实现(附源码)
(四)C# QQ讨论组广告群发工具——操作QQ的TreeView控件(附源码)